我有一个1,000,000 x 50 Pandas DataFrame,我目前正在使用以下方法写入sql表:
df.to_sql(‘my_table’,con,index = False)
这需要非常长的时间.我已经看到了关于如何在线加速这个过程的各种解释,但它们似乎都不适用于MSsql.
>如果我尝试以下方法:
Bulk Insert A Pandas DataFrame Using SQLAlchemy
然后我得到一个no属性copy_from错误.
>如果我尝试多线程方法:
http://techyoubaji.blogspot.com/2015/10/speed-up-pandas-tosql-with.html
然后我得到一个QueuePool限制大小5溢出10到达,连接超时错误.
有没有简单的方法来加速to_sql()到MSsql表?要么是通过BULK copY还是其他一些方法,而是完全来自Python代码?
解决方法:
我已经使用ctds进行批量插入,使用sql服务器的速度要快得多.在下面的示例中,df是pandas DataFrame. DataFrame中的列序列与mydb的架构相同.
import ctds
conn = ctds.connect('server', user='user', password='password', database='mydb')
conn.bulk_insert('table', (df.to_records(index=False).tolist()))