【问题标题】:transfer data from mysql DB to postgresql DB将数据从 mysql DB 传输到 postgresql DB
【发布时间】:2015-04-02 05:30:57
【问题描述】:

我有一个mysql DB,它有 30-40 个表。现在我想将它的数据传输到结构与 mysql DB 不同的 postgresql DB。所以我只想传输一些列值进入potsgresql
我想在windows server上做。
怎么做?有什么工具可以做吗?

【问题讨论】:

标签: mysql postgresql transfer


【解决方案1】:

对于选择性迁移,当您想要将数据从 MySQL 复制到 Postgres 时,最简单的方法是利用所谓的数据包装器。 https://wiki.postgresql.org/wiki/Foreign_data_wrappers

您需要在 Postgres 数据库中创建 mysql_fwd 扩展,定义 mysql 服务器和用户映射。然后您可以创建“外部表”,可以将其视为外部数据库的窗口。您可以将它们用于阅读和写作。

CREATE EXTENSION mysql_fdw;



CREATE SERVER mysql_cms
FOREIGN DATA WRAPPER mysql_fdw
OPTIONS (host '192.168.125.206', port '3306');



ALTER SERVER mysql_cms OWNER TO cmsuser;

CREATE USER MAPPING FOR cmsuser SERVER mysql_cms OPTIONS (username 'cmsuser', password '123456');



CREATE SCHEMA mysql_cms AUTHORIZATION cmsuser;

这是一个创建外部表的示例 SQL 命令

CREATE FOREIGN TABLE mysql_cms.video(
     id INT,
     artist text,
     title text)
SERVER mysql_cms
     OPTIONS (dbname 'cms', TABLE_NAME 'video');

【讨论】:

    【解决方案2】:

    对于像这样的选择性迁移,我强烈建议使用 ETL 工具,例如:

    • Pentaho 水壶
    • Talend 工作室
    • CloverETL

    加上架构的手动转换。

    您可以尝试使用 Tim 建议的 EasyFrom 之类的 DB 迁移工具,但到目前为止,我从未对我使用过的任何工具印象深刻。

    另一种选择是简单地使用SELECT ... INTO OUTFILE 从 MySQL 进行 CSV 转储,然后使用 PostgreSQL 的 COPY 命令加载 CSV。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      相关资源
      最近更新 更多