问题描述
使用以下命令在 Azure sql DB 中创建外部文件格式时出现错误 “'EXTERNAL' 附近的语法不正确”(使用 Microsoft Docs 链接中的 T-sql 语法 - {{3} }) 但仍然出现语法错误:
--Example 1
CREATE EXTERNAL FILE FORMAT textdelimited1
WITH ( FORMAT_TYPE = DELIMITEDTEXT,FORMAT_OPTIONS ( FIELD_TERMINATOR = '|')
GO
--Example 2
CREATE EXTERNAL FILE FORMAT skipHeader_CSV
WITH (FORMAT_TYPE = DELIMITEDTEXT,FORMAT_OPTIONS(
FIELD_TERMINATOR = ',',STRING_DELIMITER = '"',FirsT_ROW = 2,USE_TYPE_DEFAULT = True)
)
请帮我解决这个问题。 提前致谢
解决方法
正如@wBob 提到的,因为 Azure SQL DB 和 MI 不支持外部文件格式。我们可以使用 EXTERNAL DATA SOURCE。这个问题的原因有很多(无法批量加载,因为...无法打开)。
CREATE DATABASE SCOPED CREDENTIAL UploadInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',SECRET = 'sv=2019-12-12******2FspTCY%3D'
我已经尝试了以下测试,效果很好。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '***';
go
CREATE DATABASE SCOPED CREDENTIAL UploadInvoices
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',SECRET = 'sv=2019-12-12&ss=bfqt&srt=sco&sp******%2FspTCY%3D'; -- dl
CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH (
TYPE = BLOB_STORAGE,LOCATION = 'https://***.blob.core.windows.net/<container_name>',CREDENTIAL = UploadInvoices
);
BULK INSERT production.customer
FROM 'bs140513_032310-demo.csv'
WITH
(
DATA_SOURCE = 'MyAzureInvoices',FORMAT = 'CSV',FIRSTROW = 2
)
GO