我有一个 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 许可协议
For
sqlalchemy
>= 1.3, rather than usingto_sql()
’s method parameter, usefast_executemany=True
insqlalchemy's create_engine()
.这应该至少与method="multi"
一样快,同时避免 T-SQL 对存储过程的 2100 个参数值的限制,这会导致出现 此处 的错误。从同一链接归功于 Gord Thompson。