mysql uroot pg t_把postgresql中的表导入到mysql数据库中的两种方式

一般来说数据库表的导入导出都是在同一类型的数据库中操作比较常见,不同类型数据库之间的操作不太常见。因为毕竟不同类型数据库之间会有一些差别,在跨库导入的时候需要修改一些东西才能保证正常导入另一种类型数据库中。正好在工作中遇到了这种情况,是要把postgresql中的表导入到mysql数据库中去,总结了两种方式,希望大家可以用来参考一下(如有不对,还请多提宝贵意见)。

第一种:通过Navicat for PostgreSQL工具来进行(这个工具可以在百度上下载)

大概的步骤:通过该工具提供的把数据库或者表生成sql文件的功能来进行导出,然后再将导出的sql文件进行修改,之后将修改的sql文件导入到mysql中去

mysql uroot pg t_把postgresql中的表导入到mysql数据库中的两种方式_第1张图片

然后在该表名上右键进行导出操作(可以导出表结构或者表数据和结构,我这里是导出表结构和数据),将导出的sql文件保存到一个位置中

mysql uroot pg t_把postgresql中的表导入到mysql数据库中的两种方式_第2张图片

下面是导出来的sql文件部分内容:

mysql uroot pg t_把postgresql中的表导入到mysql数据库中的两种方式_第3张图片mysql uroot pg t_把postgresql中的表导入到mysql数据库中的两种方式_第4张图片

是不是觉得和mysql的sql文件差不多,但是问题就是出现在细节上,下面就放一张mysql的sql文件,来对比下

mysql uroot pg t_把postgresql中的表导入到mysql数据库中的两种方式_第5张图片

接下来就是要修改postgresql的sql脚本了,修改的地方一般有以下几个地方:

1."  要改成 `

2.对于字段的说明不能是 COMMENT ON COLUNN  "XXX" IS "XXX" 这种方式要改成mysql对字段的说明

3,postgresqlz中的一些函数和方法mysql是不能识别的也要去掉比如nextval('tb_cad_sql'::regclass)

4.以防万一把sql文件里面的注释型的内容也去掉

5.对于我的这个sql文件来说要把里面的“soc”.去掉

经过一番修改后的sql内容如下:

mysql uroot pg t_把postgresql中的表导入到mysql数据库中的两种方式_第6张图片

用下面的命令mysql -uroot -p test

第二种:用命令行的方式导入导出

步骤:先导出表结构在导出表数据,修改后再导入表结构和表数据

首先进入到postgresql的安装目录的bin目录下面执行   ./pg_dump -Usoc -t tb_cad  -s soc>/root/tb_cad.sql(-s是导出表结构 -t是那张表,soc是对应的数据库,如果执行./pg_dump -Usoc -t tb_cad  soc>/root/tb_cad.sql导出的sql文件里面是包含了表结构和表中数据,但是里面会出现copy命令,就是向表里面插入数据,这个我没有调好,所以没有用这个命令。)这条命令导出的是表结构,内容如下:

mysql uroot pg t_把postgresql中的表导入到mysql数据库中的两种方式_第7张图片

修改同上面修改一样,修改后的内容如下:

mysql uroot pg t_把postgresql中的表导入到mysql数据库中的两种方式_第8张图片

然后用下面的命令mysql -uroot -p test

然后在postgresql数据库的bin目录下执行./pg_dump -Usoc -t tb_cad  -a --column-inserts soc>/root/tb_cad.sql导出表数据(-a是只导数据,--colunm-inserts是将每条数据以insert语句进行插入)得到的内容如下:

mysql uroot pg t_把postgresql中的表导入到mysql数据库中的两种方式_第9张图片

经过修改内容如下:

mysql uroot pg t_把postgresql中的表导入到mysql数据库中的两种方式_第10张图片

然后在mysql数据库中对应的数据库下面执行命令       load data local infile '/root/tb_cad.sql' into table tb_cad ;

ok,两种方式演示完毕,如有错误,请提出。

你可能感兴趣的:(mysql,uroot,pg,t)