是否有将大表从 mysql 导出到 postgresql 的快速方法?

sli*_*lim 2 mysql postgresql

我有一个包含大约 270 万条记录、63 个字段和几个索引的表。我需要能够快速从 mysql 获取这个表到 postgresql(比如在一小时内)。我知道mysql可以快速导出数据,但是postgresql在导入数据时似乎很慢。有任何想法吗?我已经导入了从 mysqldump 生成的 CSV 大约 3 个小时了。

Der*_*rfK 6

我能想到的最快方法是删除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_segmentsautovacuum设置,并且您需要在完成后重新设置 autovacuum。