我正在将应用程序迁移到另一台服务器,需要将数据库内容从 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
答案2
我相信(我曾成功完成过几次迁移)这pgloader
是事实上最好的方法。您不需要从 mysql 转换转储文件,只需连接到源数据库(或源数据库文件),这样加载器就可以查询它所需的所有内容,然后迭代复制数据。