gpt4 book ai didi

python - 在 Python 中读写大量数据

转载 作者:行者123 更新时间:2023-11-28 21:41:32 27 4
gpt4 key购买 nike

我正在尝试从数据库中检索大量数据(超过 700 万条)并尝试保存一个平面文件。正在使用 python 代码(python 调用存储过程)检索数据。但是我在这里遇到了问题。该进程占用了大量内存,因此 unix 机器会自动终止该进程。我正在使用 read_sql_query 读取数据并使用 to_csv 写入平面文件。所以,我想问问有没有办法解决这个问题。可能一次只读取几千行并保存它们并转到下一行。我什至也使用了 chunksize 参数。但似乎并没有解决问题。

如有任何帮助或建议,我们将不胜感激。

最佳答案

当您在 read_sql_query 中使用 chunksize 时,您可以迭代结果以避免一次将所有内容加载到内存中。但是,您还必须分块写入 CSV 文件,以确保您不只是将查询结果逐 block 复制到新的巨大 DataFrame 中。注意只写一次列标题。这是一个使用 Pandas 的例子:

import pandas as pd

dbcon = ... # whatever

with open("out.csv", "w") as fh:
chunks = pd.read_sql_query("SELECT * FROM table_name", dbcon, chunksize=10000)
next(chunks).to_csv(fh, index=False) # write the first chunk with the column names,
# but ignore the index (which will be screwed up anyway due to the chunking)
for chunk in chunks:
chunk.to_csv(fh, index=False, header=False) # skip the column names from now on

如果您在对 read_sql_query 的调用中显式设置 index_col,则在编写 CSV 时不必忽略索引。

关于python - 在 Python 中读写大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44706706/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com