MySQL数据全量导入PG的方法
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,下面会用到一个perl脚本来做数据格式的转换: https://github.com/ahammond/mysql2pgsql1 导出mysql的数据# 导出结构mysqldump bx_cmdb_3
千家信息网最后更新 2026年11月01日MySQL数据全量导入PG的方法
下面会用到一个perl脚本来做数据格式的转换: https://github.com/ahammond/mysql2pgsql
1 导出mysql的数据
# 导出结构mysqldump bx_cmdb_37 --master-data=2 --skip-opt --default-character-set=utf8 --no-data --compact --skip-dump-date --set-gtid-purged=OFF > /tmp/struct.sql# 导出数据mysqldump bx_cmdb_37 --master-data=2 --skip-opt --default-character-set=utf8 --no-create-info --compact --skip-dump-date --set-gtid-purged=OFF > /tmp/data.sql
2 使用perl脚本,将上一步骤中的2个sql转为pg格式的,命令类似如下
下载 到 /root/目录下chmod +x /root/mysql2pgsql.perlcd /tmp//root/mysql2pgsql.perl struct.sql struct_pg.sql/root/mysql2pgsql.perl data.sql data_pg.sqlsed -i.bak 's# int # bigint #g' struct_pg.sqlsed -i.bak 's# smallint # int #g' struct_pg.sqlsed -i.bak 's# datetime(6) # timestamp #g' struct_pg.sql做上面的几个sed替换操作的原因是: 这里我遇到几个问题(我下面的操作处理的不够优雅):1 部分int unsigned的数据,perl脚本给转成了int signed,导致范围缩小了,后续插入数据可能溢出,因此我这里将全部建表语句中的int 替换为bigint2 注意 datetime的列,在PG里面我们需要人工改成 timestamp 类型的,不然会报错3 smallint 都改成 int类型,防止到PG中插入溢出
3 将文件导入到PG库中(注意可能有些不兼容的报错)
chown postgres.postgres /tmp/bbb.sqlpsql --port 5434 -d testdb -f /tmp/bbb.sql 即可导入到PG的testdb库中
4 后续的增量数据同步,可以使用 go-mysql-postgresql来进行(下一篇blog介绍用法)
我们 导出data.sql 的时候, 已经带上 master-data了,很容易就知道最后复制的binlog位置。
## 参考 http://zhansq.cn/article/18-08-09/43.html
数据
脚本
格式
类型
面的
优雅
不够
人工
位置
几个问题
原因
命令
增量
文件
时候
步骤
目录
结构
范围
语句
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
中关村互联网 科技集团
互联网和科技技术
互联网科技有限公司经营范围
互联网电商科技
互联网巨头科技公司
高科技与互联网
互联网科技英文
互联网科技公司名称
福州新华互联网科技学校 知乎
宁夏科技产业互联网案例
互联网为啥属于高科技
玉溪新华互联网科技好不好
深圳无忧互联网科技
四川互联网展示科技馆设计
互联网科技数字货币
互联网时代科技型公司的机会
中国互联网公司的科技投入
科技互联网专业工作会议发言稿
六子台科技互联网展会
互联网科技快速发展优美句子
天津市摩尔互联网科技
互联网科技保险
远拓互联网科技
广州互联网络科技有限公司
智腾互联网科技有限公司
中国互联网公司排名锤子科技
世界互联网领先科技成果获奖
华中科技大学互联网的牛人
网互联网络科技
互联网科技自媒体灵感