将Blob存储中的CSV批量加载到SQL数据库

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

有很多与此类似的问题,但似乎没有一个确切的问题,也没有建议的解决方案对我有用。

我有一个Azure SQL数据库和Azure Blob存储,正在尝试将CS​​V文件中的数据获取到现有表中(相同的数据结构,列顺序等。)>

csv文件的格式没有索引或标头,是通过Python在我的pandas数据帧中生成的,具有以下内容:df.to_csv(csv_path, index=False, header=False),然后上传到Blob存储。

我用来尝试在SQL中插入数据的代码是:

CREATE DATABASE SCOPED CREDENTIAL AccessAzure
WITH
     IDENTITY = 'SHARED ACCESS SIGNATURE'
,    SECRET = 'sv=<my_token>'
;

CREATE EXTERNAL DATA SOURCE GeneralBlob
WITH
(    LOCATION   = 'https://<my_storage_account>.blob.core.windows.net/general/'
,    CREDENTIAL = AccessAzure
,    TYPE       = BLOB_STORAGE
)
;

BULK INSERT <existing_table>
FROM 'data.csv' 
WITH (DATA_SOURCE = 'GeneralBlob',
      FORMAT = 'CSV')
;

除了最后一部分,所有内容运行都没有错误:

Cannot bulk load. The file "data.csv" does not exist or you don't have file access rights.

我已经通过了测试我的SAS令牌等https://<my_storage_account>.blob.core.windows.net/general/data.csv?sv=<my_token>只是在我的浏览器中,然后提示下载我的CSV。因此它确实存在,并且使用令牌,我应该具有文件访问权限,但是尽管如此,我仍然在SQL中收到该错误。

我也尝试过

SELECT * FROM OPENROWSET(
   BULK 'data.csv',
   DATA_SOURCE = 'GeneralBlob',
   FORMAT = 'CSV'
   ) AS DataFile;

但是它抱怨缺少格式文件,我找不到合适的资源来告诉我如何为CSV格式之一。在我看来,当批量插入仍然无法执行时,这也不起作用。

我真的很欢迎任何帮助!

有许多与此类似的问题,但似乎没有一个确切的问题,也没有建议的解决方案对我有用。我有一个Azure SQL数据库和Azure Blob存储,正在尝试...

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

您是否尝试过将外部数据源类型更改为HADOOP并且位置看起来不正确。

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