Mysql 迁移到 PostgreSQL 傻瓜手札
好折腾
据说PostgreSQL 非常强大与文档,但是之前的项目是MySQL的;
查阅了n多的网上资料和参考了n多的大咖手记,经历了无数次失败,终于整理出一条必定成功的捷径,赶紧记录下来分享给大家。实在太不容易了。
工具介绍
- mysqldump
- mysql2pgsql.perl.zip
不需要了,好简单哈
导出原始表结构和数据
- mysqldump --no-data [dbname] >dbdef.sql
- mysqldump -v -nt --complete-insert=TRUE --compact --no-create-info --skip-quote-names [dbname] >dbdata.sql
这样我们得到2个文件:
- dbdef.sql
- dbdata.sql
数据转换
- perl mysql2pgsql.perl dbdef.sql dbdef.psql
这样我们得到 dbdef.psql 这个结构适用于pgsql的文件
数据导入
- psql -U username -d [dbname] -f dbdef.psql
注意是后缀是 psql
- 导入数据 psql -U username -d [dbname] -f dbdata.sql
错误?
- 如果出现数据文件(dbdata.sql)导入出错是因为mysql默认字符串里的''是转义符,而pgsql默认不是,修改postgresql.conf:
`backslash_quote = on
escape_string_warning = off
standard_conforming_strings = off
`
数据导入完成后可以改回默认值。