我有一个mysql
数据库,其中包含30-40个表。现在我想将其数据传输到postgresql
数据库,其结构与mysql
DB不同。所以我要传输只有部分列值为potsgresql
我想在Windows服务器上这样做
怎么做?有没有任何工具?
答案 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工具,如:
加上模式的手动转换。
您可以尝试像Tim建议的EasyFrom工具之类的数据库迁移工具,但我从未对目前使用过的任何内容印象深刻。
另一种选择是使用SELECT ... INTO OUTFILE
从MySQL进行CSV转储,然后使用PostgreSQL的COPY
命令加载CSV。