Azure Blob到Azure SQL表创建

时间:2018-04-09 11:36:19

标签: azure azure-sql-database azure-storage-blobs bulkinsert

我正在尝试使用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 STATEMENT
BULK 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中,对此有何想法?

1 个答案:

答案 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