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 中,如以下参考文献中提到的文章中所述。
参考资料:
- 加载中20gb json file in pandas
- 正在将 dataframes 数据加载到 postgresql table article
- 读一个
这是我正在开发的程序 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 中,如以下参考文献中提到的文章中所述。
参考资料:
- 加载中20gb json file in pandas
- 正在将 dataframes 数据加载到 postgresql table article
- 读一个