【发布时间】: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