如何将数据从 Firebird 数据库迁移到 Linux 上的 PostGreSQL

如何将数据从 Firebird 数据库迁移到 Linux 上的 PostGreSQL

有没有什么好的工具可以将现有的 firebird 数据库迁移到 Linux 系统的 PostgreSQL?

我看过:FB出口它可用于将数据转储为插入语句,但它主要用于从一个 firebird db 导出/导入到另一个 firebird db,而不是作为迁移工具。

还有:Firebird 转 PostgreSQL Win32 工具,但是只适用于win32系统。

有没有什么好工具可以做到这一点?还是我应该自己动手?

答案1

当我需要将一些复杂的数据从 MySQL 数据库移动到 PostgreSQL 数据库时,我编写了一个 perl 脚本,该脚本连接到 MySQL 数据库,选择数据,执行所需的任何转换(例如将 tinyint(1) 转换为布尔值,将自动增量转换为序列等),然后将其插入到 PostgreSQL 数据库中。对于更简单的转换,我像 FBexport 一样对插入语句文件执行了 mysql_dump,然后使用 sed 脚本修复了需要修复的内容。它不是自动化的,也不是完美的,但它速度很快,而且足够好。

答案2

看一下这个:
http://www.sqlmanager.net/en/products/postgresql/datapump

我从来没有用过它所以我不能说它是否好。

答案3

从我在这里收到的回复中,我了解到 Linux 上没有针对 Firebird -> PostgreSQL 的特定迁移工具。

我想我必须自己写这个。

这里的主要问题是优化这种迁移的性能。

我确实找到了postgreSQL 文档第 14 章中有丰富的资源,解释了向 postgreSQL 插入大量数据的最佳方法是什么,例如:

  • 禁用自动提交。
  • 使用 COPY 而不是一系列 INSERT 语句。
  • 删除索引(或者更重要的是,仅在数据插入结束时创建它们)。
  • 各种内存配置调整。

答案4

您可以使用 FullConverter,但我认为没有任何商业工具可以一键完成此操作。您需要检查约束、索引和自动增量。

您也可以尝试编写自己的 bash/perl/python/whatever 脚本来完成这项工作。

相关内容