Python 将巨大的 csv 加载到 postgresql

Python load huge csv to postgresql

这是我正在开发的程序 python -

第 1 步 - 我们将从源文件到我们的服务器获取 JSON 文件(大小可能以 GB 为单位,例如 50 GB 或更多)- 第 2 步 - 我使用 Pandas Dataframe 将 JSON 加载到 DF 使用 df = pd.read_json(jsonfile,index=False, header=False

Step3 - 我使用 df.to_csv(temp_csvfile,..)

步骤 4 - 我使用 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()

我就以下几点寻求反馈 -

一个。如果我的系统内存小于 JSON 文件的大小,这种将 JSON 加载到 Pandas Dataframe 的方式是否会导致内存不足问题..

b。在第 5 步,我再次以读取模式打开文件,这里会出现同样的问题,因为它可能会在内存中加载文件(我在这里遗漏了什么)

c。有什么更好的方法吗..

d。可以 Python DASK 可以使用吗,因为它提供块读取数据(我对此不熟悉)。

请指教

您可以将输入 json 文件拆分为许多较小的文件,并且在将文件内容读入 pandas 数据帧时还可以使用 chunk 大小参数。此外,使用支持 buffer 大小参数的 psycopg2 copy_from 函数。 事实上,您可以使用 execute_batch() 将成批的行插入到您的 Postgresql table 中,如以下参考文献中提到的文章中所述。

参考资料:

  1. 加载中20gb json file in pandas
  2. 正在将 dataframes 数据加载到 postgresql table article
  3. 读一个