首页 > 解决方案 > Azure Blob 无法批量加载

问题描述

CREATE PROCEDURE LoadData
AS
BEGIN

DELETE FROM [dbo].[File];

BULK INSERT [dbo].[File]
FROM 'File.csv'
WITH ( 
    DATA_SOURCE = 'AzureBlob',
    FORMAT      = 'CSV',
    FIRSTROW    = 2
);

END
---------------------
CREATE EXTERNAL DATA SOURCE AzureBlob
WITH ( 
    TYPE       = BLOB_STORAGE,
    LOCATION   = 'https://marczakiocsvstorage.blob.core.windows.net/input',
CREDENTIAL = BlobCredential
);
-----------------------------
CREATE DATABASE SCOPED CREDENTIAL BlobCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'sv=SAS_TOKEN_HERE';

按照本指南 ( https://marczak.io/posts/azure-loading-csv-to-sql/ ),我正在尝试将数据从 Azure Blob 加载到 Azure SQL 表中。

创建外部数据源并运行存储过程后,出现以下错误:

“无法批量加载,因为无法打开文件“File.csv”。操作系统错误代码 5(访问被拒绝。)。”

我确保在创建凭证时仔细检查了我的 SAS 令牌并排除了问号。还仔细检查了 Contrainer URL。一切似乎都还好。我在这里可能会错过什么以防止 blob 被读取?

标签: sqlazureazure-sql-databaseazure-storageazure-blob-storage

解决方案


请使“输入”容器存在于 BLOB 帐户中。

请验证共享访问签名的开始和到期日期和时间,验证其时区并验证“允许的 IP 地址”是否为空白。

在此处输入图像描述

尝试改用 OPENROWSET。

SELECT * INTO TempFile FROM OPENROWSET( BULK 'input/File.csv', DATA_SOURCE = 'AzureBlob', SINGLE_CLOB)

推荐阅读