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

洛兹

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

我有一个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.

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

我也尝试过

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

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

我真的很欢迎任何帮助!

洛兹

我通过编写一些代码以使用CSV制作格式文件来与OPENROWSET进行连接。有效的SQL代码是:

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

我编写的用于从DataFrame制作格式文件的Python函数是:

def make_fmt_file(df, filename):
    num_cols = len(df.columns))
    with open(filename, 'w') as f:
        f.write('10.0\n')
        f.write(f'{num_cols}\n')
        for i, column in enumerate(df.columns):
            dataType = 'SQLCHAR' # Only seems to work with SQLCHAR
            collation = '""'
            if i+1 < len(df.columns):
                line = f'{i+1}\t{dataType}\t0\t0\t\","\t{i+1}\t{column}\t{collation}'
            else:
                line =f'{i+1}\t{dataType}\t0\t0\t\"\\r\\n"\t{i+1}\t{column}\t{collation}'
            f.write(line+'\n')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将几个BLOB从SQL数据库加载到C#中的ListView中

来自分类Dev

将几个BLOB从SQL数据库加载到C#中的ListView中

来自分类Dev

通过批量插入或加载数据将CSV文件导入数据库(sql)

来自分类Dev

将数据从Essbase加载到SQL数据库

来自分类Dev

从sybase数据库批量加载到HDFS

来自分类Dev

Rails 4如何将图像作为Blob加载到数据库中

来自分类Dev

Rails 4如何将图像作为Blob加载到数据库中

来自分类Dev

xCode,将数据存储在设备上并稍后加载到服务器数据库

来自分类Dev

Python ETL-使用cx_Oracle批量或迭代将大型数据集加载到Oracle数据库中

来自分类Dev

如何将数据从 csv 加载到 Spark 中的 mysql 数据库?

来自分类Dev

如何将图像加载到PictureBox;基于存储在数据库中的图像位置

来自分类Dev

将 URL(存储在数据库中的 URL)中的图像加载到 Picturebox

来自分类Dev

Android OnItemClick 无法将加载的 SQL 数据库加载到列表视图中

来自分类Dev

将批量JSON数据加载到SQL Server表中

来自分类Dev

使用Java将日期和时间的csv文件加载到oracle数据库中

来自分类Dev

将CSV和JSON转换的DataFrame加载到PostgreSQL数据库失败

来自分类Dev

使用 Spring Batch 将多个 CSV 文件加载到数据库中

来自分类Dev

pandas.read_csv与其他用于将CSV加载到Postgres数据库中的csv库

来自分类Dev

将数据从 SQL Server 数据库加载到 C#

来自分类Dev

无法将示例数据库从“凡人的SQL查询”加载到Oracle的SQL Developer中

来自分类Dev

将数据加载到Titan数据库

来自分类Dev

将数据从JSON文件加载到MYSQL数据库

来自分类Dev

从数据库Android将数据加载到ListView中

来自分类Dev

使用cron将数据加载到MySQL数据库

来自分类Dev

Java SwingWorker将数据从数据库加载到列表

来自分类Dev

Firebase 数据库将数据加载到 Listview

来自分类Dev

无法找到将数据库数据加载到的变量

来自分类Dev

无法将数据解析为CSV格式:“将csv加载到数据库时发现额外的列错误”

来自分类Dev

解析巨大的CSV并加载到MySQL数据库中

Related 相关文章

  1. 1

    将几个BLOB从SQL数据库加载到C#中的ListView中

  2. 2

    将几个BLOB从SQL数据库加载到C#中的ListView中

  3. 3

    通过批量插入或加载数据将CSV文件导入数据库(sql)

  4. 4

    将数据从Essbase加载到SQL数据库

  5. 5

    从sybase数据库批量加载到HDFS

  6. 6

    Rails 4如何将图像作为Blob加载到数据库中

  7. 7

    Rails 4如何将图像作为Blob加载到数据库中

  8. 8

    xCode,将数据存储在设备上并稍后加载到服务器数据库

  9. 9

    Python ETL-使用cx_Oracle批量或迭代将大型数据集加载到Oracle数据库中

  10. 10

    如何将数据从 csv 加载到 Spark 中的 mysql 数据库?

  11. 11

    如何将图像加载到PictureBox;基于存储在数据库中的图像位置

  12. 12

    将 URL(存储在数据库中的 URL)中的图像加载到 Picturebox

  13. 13

    Android OnItemClick 无法将加载的 SQL 数据库加载到列表视图中

  14. 14

    将批量JSON数据加载到SQL Server表中

  15. 15

    使用Java将日期和时间的csv文件加载到oracle数据库中

  16. 16

    将CSV和JSON转换的DataFrame加载到PostgreSQL数据库失败

  17. 17

    使用 Spring Batch 将多个 CSV 文件加载到数据库中

  18. 18

    pandas.read_csv与其他用于将CSV加载到Postgres数据库中的csv库

  19. 19

    将数据从 SQL Server 数据库加载到 C#

  20. 20

    无法将示例数据库从“凡人的SQL查询”加载到Oracle的SQL Developer中

  21. 21

    将数据加载到Titan数据库

  22. 22

    将数据从JSON文件加载到MYSQL数据库

  23. 23

    从数据库Android将数据加载到ListView中

  24. 24

    使用cron将数据加载到MySQL数据库

  25. 25

    Java SwingWorker将数据从数据库加载到列表

  26. 26

    Firebase 数据库将数据加载到 Listview

  27. 27

    无法找到将数据库数据加载到的变量

  28. 28

    无法将数据解析为CSV格式:“将csv加载到数据库时发现额外的列错误”

  29. 29

    解析巨大的CSV并加载到MySQL数据库中

热门标签

归档