【问题标题】:Migration from MySQL to Postgresql with auto-increments - how?使用自动增量从 MySQL 迁移到 Postgresql - 如何?
【发布时间】:2016-08-25 09:48:40
【问题描述】:

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

我试过了:

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

上述程序中没有一个能很好地转换我的数据库!

我看到了一些用于将 mysql 转换为 postgresql 的 Perl 和 Python 脚本,但我不知道如何使用它们....(我安装了 ActivePerl,但不明白接下来我应该做什么才能运行那个脚本!)

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

有没有人能更好地转换使用自动增量作为主键的 MySQL 数据库?

【问题讨论】:

  • DBConvert DID 创建序列...但我认为最后一个数字设置不正确,因为添加记录会出错。当我从表中删除所有记录时,自动增量确实有效。还不完美,但至少我知道这些自动增量序列应该是什么样子......

标签: mysql postgresql migration


【解决方案1】:

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

使用创建数据库架构的现有 SQL 脚本,搜索并替换必要的数据类型(自动编号映射到 serial,它会自动为您完成所有序列处理),删除所有“engine=”内容然后针对 Postgres 运行新脚本。

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

我已经多次使用用于 MySQL 的示例数据库进行此操作,并且确实不需要那么长时间。

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

【讨论】:

  • 谢谢,我只是觉得这么多 MySQL 用户之前一定已经升级到 Postgresql,所以会有一个完美的工具可以为我完成一切。问题是我有一个包含 200 多个表的数据库,并且在尝试 Postgresql 时可能需要进行多次转换(并且仍然维护现有的 MySQL)。我会研究“串行”,还没有找到那个...
【解决方案2】:

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

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

http://kettle.pentaho.org/下载 Pentaho ETL

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

创建一个新工作:

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

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

选择源(左侧对话框面板)和目标(左侧对话框面板)。点击完成。

将生成作业 - 运行作业。

如果您需要任何帮助,请告诉我。

【讨论】:

  • 你先生真棒!
  • @RizwanPatel 很高兴为您提供帮助 :)
【解决方案3】:

即使您熟悉所有“PostgreSQL 陷阱”,手动完成每一步也可能需要大量时间,尤其是当您的数据库“大”时。 试试other scripts/tools

【讨论】:

    【解决方案4】:

    我知道这是一个老问题,但我在从 MySQL 迁移到 Postgres 时遇到了同样的问题。在尝试了几种迁移工具之后,我找到了最好的一个,它将尽可能干净地迁移您的数据库结构,是 Pgloader https://github.com/dimitri/pgloader/,它将负责将 Auto Increment 更改为 Postgres 序列没有问题,而且速度非常快。

    【讨论】:

    • 但 pgloader 仅在开源生态系统中工作,在 win dev 中存在一些问题!
    猜你喜欢
    • 2018-02-05
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 2023-03-09
    • 2011-07-23
    • 1970-01-01
    • 2010-09-06
    相关资源
    最近更新 更多