通过Python先把数据写入CSV文件,然后用COPY语句批量导入PostgreSQL。
具体步骤可以是:
- 在Python代码中,将数据写入CSV文件,而不是逐条插入数据库。
import csv
with open('data.csv', 'w') as f:
writer = csv.writer(f)
writer.writerows(data)
- 用COPY语句将CSV文件导入数据库
COPY table_name FROM 'data.csv' CSV;
- 导入后可以删除CSV文件
这种分步骤的方法可以避免Python代码逐条插入带来的性能问题,利用PostgreSQL批量导入数据的优势。
另外,也可以考虑使用Python的批量插入机制:
- psycopg2模块的executemany() 方法
- pandas的DataFrame.to_sql()方法
来减少语句执行次数。
如果有其他问题,欢迎随时提出讨论。