回答

收藏

如何将*大*数据块导入PostgreSQL?

技术问答 技术问答 343 人阅读 | 0 人回复 | 2023-09-14

我有一个看起来像这样的数据结构:) b& T! N9 f4 r- U
Model Place    primary key "id"    foreign key "parent" -> Place    foreign key "neighbor" -> Place (symmetryc)    foreign key "belongtos" -> Place (asymmetric)    a bunch of scalar fields ...我在模型表中有500多万行,我需要在两个外键表的每个中插入 约5000万    行。我的SQL文件看起来像这样:" T/ G& n7 C6 }
INSERT INTO place_belongtos (from_place_id,to_place_id) VALUES (123,456);每一个都是 7 Gb    。问题是,当我这样做的时候,psql ! d8 k8 {" B3 I
我怀疑插入外键关系需要很长时间,因为psql根据我所知,检查每行的按键约束可能会增加一些不必要的费用。有没有办法加快导入速度,即暂时禁止约束检查?" }& h* t' r. e9 b8 w
                                                               
! z0 f3 a( m# S    解决方案:                                                                * e4 k# ]* d2 O& i7 X+ j, Z& b7 S3 F
                                                                [ol]确保两个外键约束都是DEFERRABLE! X2 @& ^0 P# `1 ]& O- K
使用COPY加载数据
4 A; k- d% s  X0 S0 C2 J假如能使用COPY,请为您的INSERT使用准备好的句子。
- S( T9 Y. p! l$ D2 QPropper配置设置也有帮助,请检查WAL设置。[/ol]
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则