【发布时间】:2021-12-25 14:44:51
【问题描述】:
这是我正在用python开发的程序-
第 1 步 - 我们将 JSON 文件(大小可能以 GB 为单位,例如 50 GB 或更多)从源到我们的服务器 -
Step2 - 我使用 Pandas Dataframe 将 JSON 加载到 DF 中
df = pd.read_json(jsonfile,index=False, header=False
Step3 - 我使用df.to_csv(temp_csvfile,..)
Steps4 - 我使用 Python psycopg2 建立 Postgresql 连接和游标 ..
curr=conn.cursor() ```
Step5 - Read the CSV and load using copy_from
with open(temp_csvfile,'r') as f:
curr.copy_from(f,..)
conn.commit()
我就以下几点寻求反馈 -
一个。如果我的系统内存是
b.在第 5 步,我再次以读取模式打开文件会出现同样的问题,因为它可能会在内存中加载文件(我在这里遗漏了什么)
c。有没有更好的方法来做到这一点..
d。可以使用 Python DASK,因为它提供分块读取数据(我对此不熟悉)。
请指教
【问题讨论】:
-
你对这种方法的怀疑是对的,它肯定会导致“内存不足”的问题。你不能在多个 json 文件中获取数据,而是在一个巨大的文件中获取数据。如果生成多个数据集文件,数据源系统也必然会更好。
-
感谢 Anand,但现在我们无法控制源系统。
-
好的,你试过了吗,有没有报错,你能分享更多细节吗?
-
另外,
chunks这样大的json文件,可以参考这个答案(stackoverflow.com/a/67126154/14973743) -
感谢 Anand,我正在尝试使用 pandas chuncksize 选项。
标签: python python-3.x pandas postgresql dask