【问题标题】:How to read large table fast in Python如何在 Python 中快速读取大表
【发布时间】:2021-02-19 20:14:03
【问题描述】:

我正在尝试从 Oracle 数据库中读取一个大表并将其保存为 Python 3 中的本地 csv 文件。这是我的代码:

import cx_Oracle
import pandas as pd

user = 'me'
password = 'password'
dsn = 'dsn'
con = cx_Oracle.connect(user, password, dsn)

for chunk in pd.read_sql("select col_a, col_d, col_s from my_table", con, chunksize=10**4):
    chunk.to_csv(r"my_path\my_file.csv", index = false)

但是,鉴于该表有 200k+ 行,并且我从 80+ 列中选择了 12 列,因此上面代码的性能简直是在爬行。

有没有更快的方法来读取表格并将其保存为 csv?

【问题讨论】:

  • 为什么要涉及熊猫?几乎可以肯定,DBMS 有一种将查询结果导出到 CSV 的有效方法,涉及 python,尤其是 pandas,不会让事情变得更快。
  • 大概你不应该在循环的每次迭代中进行文件 I/O,只在最后一次。
  • 对 oracle 没有太多经验,但这看起来很有希望:oracle-base.com/articles/9i/generating-csv-files
  • 200k+ 行实际上并不大。我每天使用 Python 和 pandas 查询一个超过 1600 万行的表。典型的查询在不到一秒的时间内完成。如果您有权访问该表,请确保它具有您正在查询的字段的适当索引。
  • 你可以试试dask

标签: python oracle performance


【解决方案1】:

Pandas 是一个功能比 Excel 更好的工具。

当您使用 LargeData 时,您需要来自 Python 的数据库连接。

您的问题的答案,哪一个是您的应用程序。 搜索https://pypi.org/ 并安装一些 pip 包作为 ...SQL...

根据包的不同,它会给出SQL语句。 有时您可以用不同的方法编写 SQL,而在其他情况下,您将有简化的方法。

在我的例子中,我使用了 SQLAlchemy。

问候。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-20
    • 2014-06-03
    相关资源
    最近更新 更多