【问题标题】:Speeding up Pandas to_sql method加速 Pandas to_sql 方法
【发布时间】:2018-10-02 02:46:18
【问题描述】:

我正在尝试使用 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)

我的连接字符串和数据库连接工作正常;我通过前几个(和小)文件就好了。但是,当我点击包含约 135k 行的 file4 时,将所有数据上传到数据库需要将近一个小时。在阅读了有关 to_sql 的“chunksize”参数的文档后,我尝试降级到 Pandas 0.22 版,但没有加快进程。

任何关于如何提高速度的提示都将不胜感激。谢谢。

【问题讨论】:

    标签: python sql sql-server pandas pandas-to-sql


    【解决方案1】:

    在尝试写入 SQL 之前尝试将所有数据堆叠到单个 DataFrame 中。

    计时。如果它需要接近那个小时,那么输入数据就会很大。

    如果不是这样,则您与数据库的连接不太可能。

    【讨论】:

    • 我确实将整个单独的 csv 文件加载到同一个数据框中,因此 to_sql 语句知道要将其添加到哪个表。但是,如果可以提供任何其他帮助或顾虑,我将使用 Azure DB 服务器连接到 SQL Server。
    【解决方案2】:

    Speeding up pandas.DataFrame.to_sql with fast_executemany of pyODBC

    自 2019-03-04 发布的 SQLAlchemy 1.3.0 以来,sqlalchemy 现在支持 engine = create_engine(sqlalchemy_url, fast_executemany=True)

    【讨论】:

      猜你喜欢
      • 2017-05-24
      • 2019-05-22
      • 2021-01-07
      • 2014-08-14
      • 2018-04-09
      • 2015-06-24
      • 1970-01-01
      • 2021-07-03
      • 2016-01-31
      相关资源
      最近更新 更多