我正在尝试使用Pandas的to_sql方法通过循环浏览将多个csv文件上传到SQL Server数据库中的相应表中。
fileLoc = r'C:\Users\hcole\Downloads\stats.csv\\'
dfArray = ['file1', 'file2', 'file3', 'file4']
for name in dfArray:
df = pd.read_csv(fileLoc + name + '.csv')
df.columns = df.columns.str.replace(' ', '')
df.to_sql(name, engine, if_exists = 'append', index = False)
我的连接字符串和数据库连接工作正常;我通过前几个(和小的)文件来完成它。但是,一旦我找到包含约13.5万行的file4,就需要将近一个小时的时间才能将所有数据上传到数据库。在阅读了有关to_sql的“ chunksize”参数的文档后,我曾尝试将其降级到Pandas 0.22版,但运气不好,无法加快过程。
任何有关如何提高速度的技巧将不胜感激。谢谢。
答案 0 :(得分:0)
在尝试写入SQL之前,尝试将所有数据堆叠到单个DataFrame中。
给这个时间。如果要花费近一个小时的时间,那么输入数据就很大。
如果不是这样,则很可能是您与数据库之间的连接不甚稳定。
答案 1 :(得分:0)
Speeding up pandas.DataFrame.to_sql with fast_executemany of pyODBC
自SQLAlchemy 1.3.0发布(2019-03-04)以来,sqlalchemy现在支持 engine = create_engine(sqlalchemy_url,fast_executemany = True)