【问题标题】:How to bulk insert into Azure SQL database without Bulk Copy Program (BCP)?如何在没有批量复制程序 (BCP) 的情况下批量插入 Azure SQL 数据库?
【发布时间】:2017-09-01 13:22:35
【问题描述】:

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

但是,对于云,批量插入是 not available。正如另一个thread 中指出的那样,BCP 是一种可行的解决方案,但它需要将数据批量插入本地数据库中。但是,在 PaaS 基础架构中,这不是一个选项,因为在操作系统级别没有控制权并且无法创建和管理数据库。

目前,131KB 的 .csv 需要 10 多分钟才能使用标准 S3 逐个原始上传:100 DTU、250 GB Azure SQL 数据库。如何加快至少一个数量级的上传速度?

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)

【问题讨论】:

  • 也可以考虑 Azure 数据工厂。

标签: python sqlalchemy azure-sql-database bulkinsert


【解决方案1】:

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

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

如需了解更多信息,请访问this 文档。

【讨论】:

猜你喜欢
  • 2019-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
  • 2011-06-28
  • 2019-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多