如何在没有批量复制程序 (BCP) 的情况下批量插入到 Azure SQL 数据库?

How to bulk insert into Azure SQL database without Bulk Copy Program (BCP)?

我想在 Azure SQL 数据库中批量插入大小不超过 50MB 的 .csv 文件,时间可能不超过 10 分钟左右。

然而,批量插入是not available for the cloud. As pointed out in another thread,BCP 是一种可行的解决方案,但它需要将数据批量插入到本地数据库中。但是,这不是 PaaS 基础结构中的一个选项,在该基础结构中没有操作系统级别的控制并且无法创建和管理数据库。

目前,使用标准 S3:100 DTU,250 GB Azure SQL 数据库原始上传 131KB 的 .csv 需要超过 10 分钟。如何将上传速度至少提升一个数量级?

import pandas as pd
import sqlalchemy
table = pd.Dataframe(<your_data_here>)
sql_driver = <driver>
sql_server = <server>
sql_user = <user>
sql_pass = <password>
sql_db = <database_name>
sql_conn = sqlalchemy.create_engine(
    'mssql+pyodbc://'+sql_user+':'+sql_pass+'@'+sql_server+'/'+sql_db+'?driver='+sql_driver)
table.to_sql('table_name', con=sql_conn)

您可以使用以下语法从 BLOB 存储帐户批量插入:

BULK INSERT Test
FROM 'source/data/Test.csv'
WITH ( DATA_SOURCE = 'MyAzureBlobStorage',
              FORMAT='CSV', CODEPAGE = 65001, 
              FIRSTROW=2,
              TABLOCK);

有关详细信息,请访问 this 文档。