我正在寻找一种将数百万个元组批量插入数据库的最有效方法。我正在使用Python、PostgreSQL和psycopg2。
我已经创建了一个长列表,其中包含应该插入到数据库中的元组,有时还包含几何Simplify
等修饰符。
最朴素的方法是对一系列INSERT
语句进行字符串格式化处理,但我读到了另外三种方法:
- 使用
pyformat
绑定风格进行参数插入 - 对元组列表使用
executemany
,以及 - 将结果写入文件并使用
COPY
。
似乎第一种方法最高效,但我很感激您的见解和代码片段,告诉我如何正确地执行它。
STDIN
读取数据,这意味着数据来自客户端应用程序。请参阅复制命令文档:http://www.postgresql.org/docs/8.4/static/sql-copy.html - pirocopy
是难以超越的。 - Avery Paynecopy
主要缺点是对于复杂数据类型的支持不够充分(如果您有此需求,更好的选择是使用pyscopg的execute_batch
/execute_values
...)。 - bluu