MySQL数据全量导入PG的方法
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,下面会用到一个perl脚本来做数据格式的转换: https://github.com/ahammond/mysql2pgsql1 导出mysql的数据# 导出结构mysqldump bx_cmdb_3
千家信息网最后更新 2025年02月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安全错误
数据库的锁怎样保障安全
南阳天气预报软件开发
广东大白互联网科技有限公司
dns服务器地址大全
组织网络安全宣传活动
黄陂靠谱的软件开发公司
国内外工程常用数据库大全
java软件开发研究生
qq炫舞手游有哪些服务器
怎么将数据库的数据拿出来
数据库连接配置文件
大话3服务器等级
银行甲方软件开发难进吗
网络安全会议龙头
网络安全学生防范措施
网络安全手抄报 漂亮版
数据库保护分为安全性控制
检察官小说软件开发
省网信办网络安全应急指挥中心
日立电梯手持编程服务器图片
泰国网络安全法
如何增加网络安全之基
凯里软件开发平均工资
一起考教师服务器即将维护完成
军事网络安全维护
服务器开启连接
虚拟机 服务器
网络技术的行业环境
宁波知上智能软件开发
软件开发纳税筹划案例
写一个循环程序连接数据库