通过自动递增从MySQL迁移到Postgresql - 如何?

时间:2011-01-11 18:43:37

标签: mysql postgresql migration

我正在为我的Web应用程序考虑使用MySQL进行Postgresql迁移,但是我很难将现有的MySQL数据库转换为Postgresql。

我试过了:

  • mysldump with --compatible = postgresql
  • EnterpriseDB的迁移向导
  • 来自EMS的Postgresql数据向导
  • 来自DMSoft的DBConvert

以上程序中的任何一个都可以很好地转换我的数据库!

我看到了一些用于将mysql转换为postgresql的Perl和Python脚本,但是我无法弄清楚如何使用它们....(我安装了ActivePerl并且不明白我接下来应该做什么那个剧本!)

我一直使用自动增量字段(作为主键),这些只是被忽略...我知道Postgresql以另一种方式(带序列)自动增量,但它不能那么难对于MIGRATION软件来实现它,或者是它?

有没有人有更好的运气转换MySQL数据库自动增量作为主键?

4 个答案:

答案 0 :(得分:2)

我知道这可能不是您正在寻找的答案,但是:我不相信“自动”迁移工具。

获取创建数据库模式的现有SQL脚本,搜索并替换必要的数据类型(自动编号映射到serial,自动为您执行所有序列处理),删除所有“engine = “然后对Postgres运行新脚本。

将旧数据库转储为平面文件并将其导入目标。

我已经使用适用于MySQL的示例数据库多次完成了这项工作,但实际上并不需要那么长时间。

可能只要尝试所有不同的“自动化”工具。

答案 1 :(得分:1)

为什么不使用ETL工具?你不必担心转储或类似的东西。 我已经迁移到PostgresSQL和MySQL,并且对自动增量字段没有任何问题。

您只需知道连接凭据即可。我个人使用Pentaho(它的开源)。

http://kettle.pentaho.org/

下载Pentaho ETL

解压缩并运行Pentaho(使用.bat文件spoon.bat)

创建一个新职位:

为源数据库创建数据库连接(PostgreSQL) - 使用菜单:工具→向导→创建数据库连接(F3)为目标数据库(Mysql)创建数据库连接 - 使用上述技术。

运行向导:工具→向导→复制表(Ctrl-F10)。

选择源(左对话框面板)和目标(左对话框面板)。单击“完成”。

将生成作业 - 运行作业。

如果您需要任何帮助,请与我们联系。

答案 2 :(得分:0)

即使你熟悉所有“PostgreSQL问题”,每一步都要花费很多时间,特别是当你的数据库“很大”时。 尝试一些other scripts/tools

答案 3 :(得分:0)

我知道这是一个老问题,但我遇到了从MySQL迁移到Postgres的同样问题。尝试了几个我能找到的最好的迁移工具,它将尽可能干净地迁移你的数据库结构,是Pgloader https://github.com/dimitri/pgloader/它会照顾将自动增量更改为Postgres序列没问题,而且速度超快。