作者:瑞景地产王琴 | 来源:互联网 | 2014-05-28 15:41
首先还要感谢一下来自大连的Backer同学,给予了一定的启发:)由于某种不可告人的原因,我们准备把数据库从pg切换到mysql,首先面临的是数据转化问题,指望工具帮你转不大靠谱,还是得手工转,以下是关键步骤1将数据库结构先迁移到mysql中,这个用rails的d
首先还要感谢一下来自大连的Backer同学,给予了一定的启发:)
由于某种不可告人的原因,我们准备把数据库从pg切换到mysql,首先面临的是数据转化问题,指望工具帮你转不大靠谱,还是得手工转,以下是关键步骤
1 将数据库结构先迁移到mysql中,这个用rails的db migrate很简单
2 用pg_dump导出postgresql的数据
pg_dump mydatabase -Upostgres -a -D -f /path/to/bak.sql
其实-a表示只取数据,-D表示在insert语句中含有字段名,这样可以避免你的数据库增加了字段而导致的数据字段不完全匹配问题,这样导出的结果是一系列insert语句。
3 用vi或者netbeans等编辑工具打开bak.sql
,发现insert语句上面有数十行postgresql平台的特定sql语句,将这些语句全部删除,最后加上“set names
utf8;”,这样就解决utf8乱码问题。
4
最关键的一点,由于pg中很多关键字的字段在insert语句中是加双引号的,而在mysql中是不加双引号的,在导入过程中会产生语法错误,解决办法是替换掉这些伪关键字,比如“password”
"domain" "position" "role"等,替换为password domain position role
5 mysql -uroot -p123456 newdatabase
6 导入成功,over