在SQL中,来自Blob的批量插入给出了错误

时间:2019-01-17 06:58:07

标签: azure-sql-database bulkinsert azure-blob-storage bulk-load azure-sql-server

我在Azure Blob存储中有CSV文件,并且想将文件内容插入到我的MS SQL表中。我在代码中使用的CSV文件和表格的列数相同。

我使用了此处指定的批量插入命令:Importing data from a file in Azure blob storage

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'xxxxxxxxx';

CREATE DATABASE SCOPED CREDENTIAL AzureBlobStorageCredential 
 WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
 SECRET = '<I kept my SAS token here without leading question(?) mark>';


CREATE EXTERNAL DATA SOURCE GSCSVFileAzureBlobStorage
WITH (  TYPE = BLOB_STORAGE, 
        LOCATION = 'https://myaccount.blob.core.windows.net/csvfileshare', 
        CREDENTIAL= AzureBlobStorageCredential    );

BULK INSERT RawItemData
FROM 'itemdata_csv_test.csv'
WITH (DATA_SOURCE = 'GSCSVFileAzureBlobStorage',FORMAT = 'CSV',FIELDTERMINATOR = ',',FIRSTROW=2);

如果我使用本地文件路径,则批量插入按预期工作,但是如果从blob中读取,则会出现此错误:

  

由于无法打开文件“ itemdata_csv_test.csv”,因此无法批量加载。操作系统错误代码32(该进程无法访问该文件,因为该文件正在被另一个进程使用。)

如何找到问题的确切位置?

1 个答案:

答案 0 :(得分:0)

我发现一些有关Azure Blob存储错误的信息:“该进程无法访问该文件,因为该文件正在被另一个进程使用。”

在此article中说,标题中的错误消息通常是端口已被使用的结果。检查哪些存储服务(blob,表或队列)无法启动,并查看计算机上是否有任何东西正在占用该端口。最常见的情况是blob存储未启动,因为BitTorrent正在使用端口10000。

使用用法netstat来确定哪个进程具有端口

netstat -p tcp -ano | findstr :10000

结束此过程,然后重试。

希望这可以为您提供帮助。