gpt4 book ai didi

python - 如何将大 CSV 文件导入 python 中的 Sqlite3?

转载 作者:太空宇宙 更新时间:2023-11-03 15:49:47 27 4
gpt4 key购买 nike

我有一个非常大的 CSV 文件,我需要将其加载到 sqlite3 中的表中。我无法将整个 CSV 内容作为变量加载到 RAM 中,因为数据太大,为每一列定义类型的事件无法放入 64 GB 的 RAM 中。

我尝试使用 numpy 和 pandas 来加载和转换数据,但仍然超出 RAM 限制。

我想以某种方式一次(或以较小的批处理)读取 CSV 1 行,并逐步将它们保存到数据库中以保持低 RAM 使用率。如果可以使用多个 CPU 内核来完成,那就太完美了。

最佳答案

我自己挖掘并结合其他 Stack Overflow 问题的答案找到了解决方案。代码应该是这样的:

import sqlite3
import pandas as pd

def add_to_db(row, con):
# Function that make insert to your DB, make your own.

def process_chunk(chunk):
# Handles one chunk of rows from pandas reader.
con = sqlite3.connect("favorita.db")
for row in chunk:
add_to_db(row, con)
con.commit()

for chunk in pd.read_csv('data.csv', chunksize=100000):
# Adjust chunksize to your needs and RAM size.
process_chunk(chunk.values)

这当然可以进一步调整以使用多线程,但由于并行插入时数据库中的死锁,我无法做到这一点。但如果你有时间,这是一个可靠的解决方案。

关于python - 如何将大 CSV 文件导入 python 中的 Sqlite3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47648983/

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