当前位置: 首页 > 知识库问答 >
问题:

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

闻人昕
2023-03-14

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

我使用了此处指定的批量插入命令:从Azure blob存储中的文件导入数据。

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\u csv\u test.csv”。操作系统错误代码32(该进程无法访问该文件,因为另一进程正在使用该文件。)。

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

共有1个答案

王旺
2023-03-14

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

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

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

netstat -p tcp -ano | findstr :10000

请结束此过程,然后重试。

希望这能帮助你。

 类似资料:
  • 我正在使用Cassandra 3.10,并试图通过每个查询都有一个表来遵循最佳实践,因此我使用批处理插入发音将多个表作为单个事务插入,但我在cassandra日志中出现以下错误。 [zed.payment,zed.trade_party_b_ref,zed.trade_product_type,zed.trade,zed.fx_variance_swap,zed.trade_party_a_ref

  • 问题内容: 在MS SQL上,我可以使用以下sql命令进行批量插入: 现在我想在MySQL上做同样的事情,但是我似乎无法弄清楚它是如何工作的以及使用什么查询。 问题答案: 在MySQL中,等效项为 加载数据文件 http://dev.mysql.com/doc/refman/5.1/en/load- data.html

  • 问题内容: 我有以下查询要插入到表中 得到消息 消息4860,级别16,状态1,行1 无法批量加载。文件“ c:\ Type.txt”不存在。 该文件显然在那里。我可能会忽略什么? 问题答案: 看一下: 无法批量加载。文件“ c:\data.txt”不存在 该文件在SQL Server的驱动器上吗? SQL BULK INSERT等始终只能与SQL Server计算机上的本地驱动器一起使用。您的S

  • 问题内容: 我想使用Hibernate Native SQL在数据库中插入记录。代码如下 上面的代码工作正常,我认为这不是最好的方法。如果有的话,请给我另一种可能的方法。谢谢 问题答案: Hibernate具有批处理功能。但是在以上情况下,我使用的是Native SQL,根据我的观察,hibernate批处理对于Native SQL并不是很有效。是的,可以肯定的是它可以避免内存不足错误,但不会提高

  • 问题内容: 一个csv文件包含8列(col1,col2,…,col8),文件名也包含必须插入表中的日期。 如果表中的列数与csv文件中的列数相等,则以下查询将所有记录从文件导入到表中: 到目前为止,我还没有找到一种解决方案来修改查询,以便新记录可以包含从文件名中提取的日期。无论如何,我已经创建了一个提取日期的函数: 并想将eventTime插入到从文件导入的每个记录的第9列中。 有谁知道如何修改/

  • 本文向大家介绍如何在mybatis中向BLOB字段批量插入数据,包括了如何在mybatis中向BLOB字段批量插入数据的使用技巧和注意事项,需要的朋友参考一下   最近接手一个需求,需要用xxl-job定时任务同步三方库中新增的数据,粗略一看挺得意,以为一两小时就搞定了,但事与愿违,编码两小时却被一个BLOB字段玩了一下午。   每次获取50条数据过来,每条数据中有一个字段是BLOB类型的图片,需