我有一个包含大约 270 万条记录、63 个字段和几个索引的表。我需要能够快速从 mysql 获取这个表到 postgresql(比如在一小时内)。我知道mysql可以快速导出数据,但是postgresql在导入数据时似乎很慢。有任何想法吗?我已经导入了从 mysqldump 生成的 CSV 大约 3 个小时了。
我能想到的最快方法是删除ALTER TABLE foo DISABLE TRIGGER ALL;
postgresql 表上的所有索引和触发器(或至少),将\.
输入结束行添加到 CSV 文件的末尾,然后将文件放在服务器上(最好在用于数据库的驱动器以外的驱动器上,或者服务器可以通过 NFS 访问的网络上的某个位置)和COPY foo FROM '/some/file.csv' WITH CSV;
(8.x 语法,在 9.0 中受支持。取决于您可能需要的 CSV 文件格式要进行修改。)然后,重新创建索引和重新启用触发器。
postgres 的一些配置选项会影响数据加载时间。禁用 autovacuum 并增加检查点之间的时间可以帮助处理大量负载,但是您需要重新启动 postgresql 以更改checkpoint_segments
或autovacuum
设置,并且您需要在完成后重新设置 autovacuum。
归档时间: |
|
查看次数: |
4263 次 |
最近记录: |