最可靠的 MariaDB 到 Postgres 转储方法

最可靠的 MariaDB 到 Postgres 转储方法

我正在将应用程序迁移到另一台服务器,需要将数据库内容从 MariaDB 迁移到 Postgresql。

大多数文档表明以下格式足以转储表:

mysqldump -u root -p --compatible=postgresql db > db.sql (and once with --default-character-set=utf8)

当我重新导入 Postgres 中的数据库时,出现了许多语法错误;以前 MySQL 数据库中没有出现过这种情况,所以我怀疑这与 MariaDB 有关。以前将同一数据库从 MariaDB 迁移到另一个 MySQL 服务器时,我也遇到了类似的问题。

我查看了一些工具Postgres 文档推荐但无济于事。

为了进一步实验,我转储--compatible=mysql然后导入到 MySQL 服务器,以便使用 Postgres 设置重新转储它,并添加:

SET standard_conforming_strings = 'off'; SET backslash_quote = 'on';

到转储文件的开头,然后再将其导入postgres,这让我取得了一些成功,直到在转储文件深处遇到另一个语法错误(此时,例如 2498 行)。

有没有更可靠的方法将 MariaDB 数据库转换为与 postgres 兼容的转储?

答案1

我强烈建议使用工具来实现这一点,而不是 mysqldump

过去我曾使用过

https://github.com/philipsoutham/py-mysql2pgsql

非常成功

答案2

我相信(我曾成功完成过几次迁移)这pgloader事实上最好的方法。您不需要从 mysql 转换转储文件,只需连接到源数据库(或源数据库文件),这样加载器就可以查询它所需的所有内容,然后迭代复制数据。

相关内容