0

使用以下命令在 Azure SQL DB 中创建外部文件格式时出现错误“'EXTERNAL'附近的语法不正确”(使用 Microsoft Docs 链接中的 T-SQL 语法 - https://docs.microsoft.com/en-us/ sql/t-sql/statements/create-external-file-format-transact-sql?view=sql-server-ver15&tabs=delimited)但仍然出现语法错误:

--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)
)

在此处输入图像描述

在此处输入图像描述

请帮我解决这个问题。提前致谢

4

1 回答 1

0

正如@wBob 所提到的,因为 Azure SQL DB 和 MI 不支持外部文件格式。我们可以使用 外部数据源。这个问题有很多原因(无法批量加载,因为...无法打开)。

  1. 检查 SAS 密钥是否已过期。请检查Allowed permissions在此处输入图像描述

  2. 创建 SECRET 时是否删除了问号?

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
于 2021-02-11T01:42:52.990 回答