我正在尝试使用BULK INSERT将BLOB文件转换为Azure中的SQL DB表。
以下是Microsoft的参考资料: https://azure.microsoft.com/en-us/updates/preview-loading-files-from-azure-blob-storage-into-sql-database/
CSV中的我的数据如下所示 100, “37415B4EAF943043E1111111A05370E”, “ONT”, “000”, “S”, “ABCDEF”, “AB”, “001”, “000002”, “001”, “04”, “20110902”, “11111111”, “20110830152048.1837780”, “” “”
我的BLOB容器位于公共访问级别。
第1步:创建存储凭据。我已经生成了一个共享的Access密钥(SAS令牌)。
CREATE DATABASE SCOPED CREDENTIAL Abablobv1BlobStorageCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'sv=2017-07-29&ss=bfqt&srt=sco&sp=rwdlacup&se=2018-04-10T18:05:55Z&st=2018-04-09T10:05:55Z&sip=141.6.1.0-141.6.1.255&spr=https&sig=XIFs1TWafAakQT3Ig%3D';
GO
步骤2:参考存储凭证创建外部数据源
CREATE EXTERNAL DATA SOURCE Abablobv1BlobStorage
WITH ( TYPE = BLOB_STORAGE, LOCATION = 'https://abcd.blob.core.windows.net/', CREDENTIAL = Abablobv1BlobStorageCredential );
GO
使用外部数据源和DB表
执行步骤3 BULK INSERT STATEMENTBULK INSERT dbo.TWCS
FROM 'TWCSSampleData.csv'
WITH ( DATA_SOURCE = 'Abablobv1BlobStorage', FORMAT = 'CSV');
GO
我遇到了这个错误:
外部数据源中指定的位置不正确或无法访问 “Abablobv1BlobStorage”。
有没有人对此有所了解?
我将EXTERNAL DATA SOURCE的位置更改为Location = abcd.blob.core.windows.net/invoapprover/SampleData.csv现在我知道,无法批量加载,因为无法打开文件“SampleData.csv”。操作系统错误代码5(访问被拒绝。)。对于使用批量插入或打开行集的两个语句。我不确定应该更改哪个访问权限,因为该文件位于我的计算机上的Azure blob中,对此有何想法?
答案 0 :(得分:0)
请尝试以下查询
SELECT * FROM OPENROWSET(
BULK 'TWCSSampleData.csv',
DATA_SOURCE = 'Abablobv1BlobStorage',
SINGLE_CLOB) AS DataFile;
确保该文件不位于BLOB存储上的容器内。在这种情况下,您需要在外部数据源的Location参数中指定容器。如果你有一个名为" files"然后该位置应该像https://abcd.blob.core.windows.net/files'。
批量导入的更多示例here。