使用不同的数据结构将数据从一个数据库移动到另一个

时间:2009-10-15 09:08:33

标签: mysql database postgresql etl

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

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

两个数据库都有不同的结构,表和表关系,表的数量以及它们下面的列。

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

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

6 个答案:

答案 0 :(得分:2)

可能不是您所需要的,但this page包含

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

并讨论了迁移数据的困难。

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

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

当然,这就是为什么要求提供工具的原因。

答案 1 :(得分:1)

我会这样做:

(仅使用数据库工具)

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

(使用自定义应用程序+ ORM(例如:C#,NHibernate) - 实现的时间更长):

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

(使用已知工具):

很抱歉,但我不知道是否有可以执行此操作的工具!

答案 2 :(得分:1)

您所描述的问题是数据仓库世界中最常见的问题之一,您需要从应用程序数据库(通常是经典的关系数据模型)中获取数据,并在具有不同结构的数据仓库中进行整合和集中(大多数时间与尺寸数据模型)。这是ETL作业(Extract Transform Load)的作用。

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

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

我会建议与其他人相同的路径略有不同。使用ETL工具来做到这一点。大多数ETL工具都可以完成您刚才描述的工作。如果您不想花钱购买“ETL”工具,我的投票将转到Talend Open Source ETL工具。我已经习惯了,它非常强大。文档和示例可在http://www.talend.com中找到。