Jef*_*man 4 python postgresql bulkinsert sqlalchemy
我有 500K 行我想使用 SQLAlchemy 插入到 PostgreSQL 中。
为了速度,我使用session.bulk_insert_mappings().
通常,我会将插入内容分成较小的批次以最大程度地减少session簿记。但是,bulk_insert_mappings()使用dicts并绕过了许多传统的会话簿记。
如果我将插入分成较小的离散批次,比如每 10K 行插入一次,我仍然会看到速度提高吗?
如果是这样,我应该在每 10K 行之后关闭 PG 事务,还是一直保持打开状态?
根据我的经验,如果您使用INSERT INTO tbl (column1, column2) VALUES (...), (...), ...;与bulk_insert_mappings使用executemany. 在这种情况下,您将希望至少在语句级别对行进行批处理以确保完整性。
SQLAlchemy支持VALUES为单个INSERT语句生成多行子句,因此您不必手工制作语句。
在批次之间提交可能不会对性能产生太大影响,但这样做的原因是不要将打开的事务保持太长时间,这可能会影响服务器上运行的其他事务。
您还可以尝试使用COPY将其加载到临时表中,然后INSERT从该表中 ing。
| 归档时间: |
|
| 查看次数: |
4585 次 |
| 最近记录: |