mysql 数据怎么迁移到postgresql
答案:2 悬赏:60 手机版
解决时间 2021-03-04 22:03
- 提问者网友:欲望失宠
- 2021-03-04 00:33
mysql 数据怎么迁移到postgresql
最佳答案
- 五星知识达人网友:怀裏藏嬌
- 2021-03-04 02:09
如果表结构在mysql和postgresql的结构差别不大,那么相互迁移是比较简单的。
可以通过用shell脚本来处理能很好的实现。
第一:mysql 导出文本文件。
第二:shell处理文本文件的格式,使之适合postgresql导入格式,生成至目标文本文件。
第三:在postgresql中执行目标文本文件即可。
可以通过用shell脚本来处理能很好的实现。
第一:mysql 导出文本文件。
第二:shell处理文本文件的格式,使之适合postgresql导入格式,生成至目标文本文件。
第三:在postgresql中执行目标文本文件即可。
全部回答
- 1楼网友:零点过十分
- 2021-03-04 03:33
mysql数据库迁移到postgresql
查了不少资料,也尝试了一些,最后采用的办法如下:
1. 导出mysql表定义(无数据)
mysqldump --no-data [dbname] >dbdef.sql
2. 使用mysql2postgres把脚本转换为pgsql
3. 上面生成的脚本还不一定很完美,可以尝试导入pgsql,调试错误并手动修改之。我遇到的问题就只有一个,mysql列定义中的zerofill需要手工去掉。一些unsinged定义会生成constraint,如果不需要可以去掉。另外,trigger都有问题,只能后面手工重建
4. 导出mysql数据:
mysqldump -v -nt --complete-insert=true --compact --no-create-info --skip-quote-names [dbname] >dbdata.sql
老一些版本的pgsql如果不支持批量插入的话还需要加上--extended-insert=false,这个性能损失巨大。
5. 转义符
mysql默认字符串里的'\'是转义符,而pgsql默认不是,修改postgresql.conf:
backslash_quote = on
escape_string_warning = off
standard_conforming_strings = off
数据导入完成后可以改回默认值。
5. pgsql里导入表定义和数据
psql -d [dbname]
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯