【问题标题】:Move data from one database to other with different data structure将数据从一个数据库移动到具有不同数据结构的另一个数据库
【发布时间】:2009-10-15 09:08:32
【问题描述】:

如何将数据从假设 mysql 数据库移动到 postgres 数据库?

场景:两个相似的应用程序。用户想要从一个应用程序切换到另一个应用程序。 但是他在以前使用mysql数据库的应用程序中维护了某些数据信息。当他切换应用程序时,他必须将数据从旧应用程序移动到使用postgres的新应用程序。

两个数据库不同,结构不同,表与表关系不同,表数和列数不同。

但是如何将日期从一个数据库移动到另一个数据库?

有什么工具可以做到这一点吗?如果是这样,任何人都可以建议这样的工具..

【问题讨论】:

    标签: mysql database postgresql etl


    【解决方案1】:

    它可能不是您需要的,但this page 包含一个

    “可下载Magic drupal-mysql2pgsql.pl 脚本”

    并讨论迁移数据的困难。

    这可能不合适,因为它可能只迁移 Drupal 数据库(而且你没有说涉及到哪些应用程序)

    您最好的选择可能是以简单的文本形式导出/备份您的 MySQL 数据,可以将其转换为 PostgreSQL 格式并导入。这需要一些脚本/编辑。

    当然,这就是您要求为这项工作提供工具的原因。

    【讨论】:

      【解决方案2】:

      我会这样做:

      (仅使用数据库工具)

      • 在 MySQL 中创建一个新数据库并用空表填充它,关系与我需要迁移到的关系完全一样 (postgres)
      • 使用 SELECT 语句将数据从原始 MySQL 数据库复制到新数据库(因为我认为新表是旧表的混合),或者可能是一些存储过程...
      • 然后使用转储工具为我的新数据库生成 sql 脚本,以便在其他地方创建。对于 MySQL,该工具是 mysqldump,它可以选择生成与 postgres 兼容的脚本:--compatible=postgres 和许多其他非常有趣的选项。
      • 在我的新数据库上运行这些脚本
      • 检查不一致,纠正...

      (使用定制的应用程序+ORM(例如:C#、NHibernate)——实现时间更长):

      • 在我的新 DBMS 上创建我的新数据库
      • 为原始数据库创建一个 O-R 映射
      • 为新数据库创建 O-R 映射
      • 使用我的 ORM 导入原始数据
      • 转换我的数据以适应我的新数据库并使用我的 ORM 插入它

      (使用已知工具):

      抱歉,我不知道是否有工具可以做到这一点!

      【讨论】:

        【解决方案3】:

        您所描述的问题是数据仓库领域中最常见的问题之一,您需要从应用程序数据库(通常是经典的关系数据模型)中获取数据,并在具有不同结构(大多数时间与维度数据模型)。这就是 ETL 作业(提取转换负载)所做的。

        您可以将它们作为 SQL 脚本、手动运行或自动运行。您需要建立的是转换逻辑,然后将其实现为 SQL 脚本。

        有专门的 ETL 工具,但我认为它们不会为您的情况增加太多价值。

        【讨论】:

          【解决方案4】:

          我还建议使用 ETL 工具来完成此类工作。应用不同的功能将使您的迁移 100% 成功。我建议为商业用户使用 Apatar (apatar.com) 等开源工具,为技术用户使用 Talend (talend.com)。

          【讨论】:

            【解决方案5】:

            针对这些场景,有一整个行业的工具。谷歌搜索“ETL”以及您正在处理的数据库供应商名称,您可能会找到比您在合理时间内评估的更多的解决方案。

            【讨论】:

              【解决方案6】:

              我会建议与其他路径相同的路径,但略有不同。使用 ETL 工具来做到这一点。大多数 ETL 工具都可以完成您刚才描述的工作。如果您不想花任何钱购买“ETL”工具,我会投票给 Talend 开源 ETL 工具。我用过它,它非常强大。 http://www.talend.com 中提供了文档和示例。

              【讨论】:

                猜你喜欢
                • 2016-01-20
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2012-11-27
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-10-01
                相关资源
                最近更新 更多