Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-从数据帧使用sqlalchemy写入SQL server数据库_Python_Sql_Sql Server_Pandas_Sqlalchemy - Fatal编程技术网

Python-从数据帧使用sqlalchemy写入SQL server数据库

Python-从数据帧使用sqlalchemy写入SQL server数据库,python,sql,sql-server,pandas,sqlalchemy,Python,Sql,Sql Server,Pandas,Sqlalchemy,我有一个大约300000行(20mb)的pandas数据帧,希望写入SQL server数据库 我有以下代码,但执行起来非常慢。想知道是否有更好的方法 import pandas import sqlalchemy engine = sqlalchemy.create_engine('mssql+pyodbc://rea-eqx-dwpb/BIWorkArea? driver=SQL+Server') df.to_sql(name='LeadGen Imps&Clicks', co

我有一个大约300000行(20mb)的pandas数据帧,希望写入SQL server数据库

我有以下代码,但执行起来非常慢。想知道是否有更好的方法

import pandas
import sqlalchemy

engine = sqlalchemy.create_engine('mssql+pyodbc://rea-eqx-dwpb/BIWorkArea? 
driver=SQL+Server')

df.to_sql(name='LeadGen Imps&Clicks', con=engine, schema='BIWorkArea', 
if_exists='replace', index=False)

如果要加快写入sql数据库的过程,可以通过
pandas
DataFrame

from sqlalchemy import types, create_engine
d={}
for k,v in zip(df.dtypes.index,df.dtypes):
    if v=='object':
       d[k]=types.VARCHAR(df[k].str.len().max())
    elif v=='float64':
       d[k]=types.FLOAT(126)
    elif v=='int64':
       d[k] = types.INTEGER()
然后


:我本想以副本的形式关闭,但我没有立即找到链接的答案。@MitchWheat的可能副本为您找到了它。
pyodbc的可能副本
过去在大型
executemany()
批处理方面存在问题,而
to_sql()
在引擎盖下使用。
fast\u executemany
标志应该在某种程度上解决这个问题(>100x加速)。
df.to_sql(name='LeadGen Imps&Clicks', con=engine, schema='BIWorkArea', if_exists='replace', index=False,dtype=d)