MySQL数据全量导入PG的方法
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,下面会用到一个perl脚本来做数据格式的转换: https://github.com/ahammond/mysql2pgsql1 导出mysql的数据# 导出结构mysqldump bx_cmdb_3
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
网络技术专业是什么
HURT伴奏软件开发
数据库安全配置基线
惠普t620服务器 显卡
易城天下网络技术有限公司
xshell定时执行数据库脚本
网络技术导论马素刚要点
360集团网络安全
美国网络安全留学
数据库导入方案
linux服务器结束ed模式
郑州市三鑫网络技术有限公司
sql 数据库更新
语音包软件开发
三明2021年网络安全培训
定额用什么软件开发的
宝山区网络软件开发常见问题
2020网络安全考试
德化保兮软件开发
管理软件开发服务费
网络安全购物英语作文
天津环保软件开发规定
焦作做软件开发
办公用品管理系统服务器版
网络安全教育周工作记录
磺胺生产批号数据库
人才数据库证书可以申请补贴吗
网络安全制度化建设
连接服务器后怎样查看数据
用友需要哪些数据库