将数据从mysql DB传输到postgresql DB

时间:2015-04-02 05:30:58

标签: mysql postgresql transfer

我有一个mysql数据库,其中包含30-40个表。现在我想将其数据传输到postgresql数据库,其结构与mysql DB不同。所以我要传输只有部分列值为potsgresql 我想在Windows服务器上这样做 怎么做?有没有任何工具?

2 个答案:

答案 0 :(得分: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');

答案 1 :(得分:0)

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

  • Pentaho Kettle
  • Talend Studio
  • CloverETL

加上模式的手动转换。

您可以尝试像Tim建议的EasyFrom工具之类的数据库迁移工具,但我从未对目前使用过的任何内容印象深刻。

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