python pandas to_sql with sqlalchemy:如何加快导出到 MS SQL 的速度?

新手上路,请多包涵

我有一个 ca 155,000 行和 12 列的数据框。如果我使用 dataframe.to_csv 将其导出到 csv,则输出是一个 11MB 的文件(立即生成)。

但是,如果我使用 to_sql 方法导出到 Microsoft SQL Server,则需要 5 到 6 分钟!没有列是文本:只有 int、float、bool 和日期。我见过 ODBC 驱动程序设置 nvarchar(max) 的情况,这会减慢数据传输速度,但这里不可能。

有关如何加快导出过程的任何建议?导出 11 MB 的数据需要 6 分钟,这使得 ODBC 连接实际上无法使用。

谢谢!

我的代码是:

 import pandas as pd
from sqlalchemy import create_engine, MetaData, Table, select
ServerName = "myserver"
Database = "mydatabase"
TableName = "mytable"

engine = create_engine('mssql+pyodbc://' + ServerName + '/' + Database)
conn = engine.connect()

metadata = MetaData(conn)

my_data_frame.to_sql(TableName,engine)

原文由 Pythonista anonymous 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 807
1 个回答

For sqlalchemy >= 1.3, rather than using to_sql() ’s method parameter, use fast_executemany=True in sqlalchemy's create_engine() .这应该至少与 method="multi" 一样快,同时避免 T-SQL 对存储过程的 2100 个参数值的限制,这会导致出现 此处 的错误。

从同一链接归功于 Gord Thompson。

原文由 Joey 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题