在SQL中,blob的批量插入给出了错误

问题描述 投票:0回答:1

我在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(进程无法访问该文件,因为它正被另一个进程使用。)。

我怎样才能找到问题的确切位置?

azure-sql-database bulkinsert azure-blob-storage bulk-load azure-sql-server
1个回答
0
投票

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

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

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

netstat -p tcp -ano | findstr :10000

结束此过程并再试一次。

希望这可以帮助你。

© www.soinside.com 2019 - 2024. All rights reserved.