有很多与此类似的问题,但似乎没有一个确切的问题,也没有建议的解决方案对我有用。
我有一个Azure SQL数据库和Azure Blob存储,正在尝试将CSV文件中的数据获取到现有表中(相同的数据结构,列顺序等。)>
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存储,正在尝试...
您是否尝试过将外部数据源类型更改为HADOOP并且位置看起来不正确。