通过Python先把数据写入CSV文件,然后用COPY语句批量导入PostgreSQL

通过Python先把数据写入CSV文件,然后用COPY语句批量导入PostgreSQL。

具体步骤可以是:

  1. 在Python代码中,将数据写入CSV文件,而不是逐条插入数据库。
import csv

with open('data.csv', 'w') as f:
  writer = csv.writer(f)
  writer.writerows(data) 
  1. 用COPY语句将CSV文件导入数据库
COPY table_name FROM 'data.csv' CSV;
  1. 导入后可以删除CSV文件

这种分步骤的方法可以避免Python代码逐条插入带来的性能问题,利用PostgreSQL批量导入数据的优势。

另外,也可以考虑使用Python的批量插入机制:

  • psycopg2模块的executemany() 方法
  • pandas的DataFrame.to_sql()方法

来减少语句执行次数。

如果有其他问题,欢迎随时提出讨论。

links