我有一个mysql
DB,它有30-40个表。现在我想把它的数据传输到postgresql
数据库中,它的结构与mysql
数据库不同。所以我只想把一些列的值转移到potsgresql
中
我想在windows服务器上做
如何做到这一点?有工具吗
对于选择性迁移,当您想将数据从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');
对于这样的选择性迁移,我强烈建议使用ETL工具,如:
- Pentaho水壶
- Talend工作室
- CloverETL
加上模式的手动转换。
你可以尝试一个DB迁移工具,比如Tim建议的EasyFrom工具,但到目前为止,我从未使用过任何一个工具给我留下深刻印象。
另一种选择是简单地使用SELECT ... INTO OUTFILE
从MySQL进行CSV转储,然后使用PostgreSQL的COPY
命令加载CSV。