当前位置:网站首页>数据库SqlServer迁移PostgreSql实践
数据库SqlServer迁移PostgreSql实践
2022-08-04 18:00:00 【51CTO】
背景
公司某内部系统属于商业产品,数据库性能已出现明显问题,服务经常卡死,员工经常反馈数据无法查询或不能及时查询,该系统所使用的数据库为SqlServer,SqlServer数据库属于商业数据库,依赖厂商的维护,且维护成本高,效率低,且存在版权等问题,考虑将该系统的数据库,迁移至PostGresql数据库,属于BSD的开源数据库,不存在版本问题,公司也有部分系统采用pg,维护成本也将大大减低。
迁移原理
SqlServer属于商业数据库,不可能像Mysql等数据库一样,去解析相关的数据库binlog,从而实现增量数据的回放,结合应用属性,最后确定采用离线迁移方式,从SqlServer中将表数据全部读出,然后将数据写入到pg中,采用此种方案的弊病就是程序端需停止写入(应用可将部分数据缓存到本地),等待数据库迁移完成后,程序端再迁移至PostGresql,迁移方法如下:

表结构迁移原理
表结构主要包含字段,索引,主键,外键等信息组成,主要采用开源工具sqlserver2pg进行表结构的转换
表结构转换
从SqlServer中读写表结构的字段信息,并对字段类型进行转换,转换核心代码如下
外键,索引,唯一键转换
主要是从sqlserver导出的表结构数据中,对相关的索引,外键等语句进行转换,转换核心代码如下
数据类型转换原理
数据类型转换

函数类型转换

存储过程
视图部分需手动改造
迁移方法
表结构转换
表结构导入pg
数据迁移
数据比对
参考
边栏推荐
- asp dotnet core 通过图片统计 csdn 用户访问
- JWT主动校验Token是否过期
- CAS:385437-57-0,DSPE-PEG-Biotin,生物活性分子磷脂-聚乙二醇-生物素
- R语言缺失时间序列的填充及合并:补齐时间序列数据中所有缺失的时间索引、使用merge函数合并日期补齐之后的时间序列数据和另外一个时间序列数据(补齐左侧数据)
- 微信jsApi调用失效的相关问题
- linux下Mysql的简单操作
- Create Sentinel high-availability cluster current limiting middleware from -99
- "No title"
- About the two architectures of ETL (ETL architecture and ELT architecture)
- R语言ggplot2可视化:使用ggpubr包的ggbarplot函数可视化柱状图、color参数指定柱状图的边框的色彩
猜你喜欢
随机推荐
小程序学习目标
Cholesterol-PEG-Maleimide,CLS-PEG-MAL,胆固醇-聚乙二醇-马来酰亚胺一种修饰性PEG
数据集成:holo数据同步至redis。redis必须是集群模式?
About the two architectures of ETL (ETL architecture and ELT architecture)
斯坦福:未来的RGB LED可以贴在你的皮肤上
Go 言 Go 语,一文看懂 Go 语言文件操作
【日记】mysql数据库连接池
第一章 对象和封装
localstorage本地存储的方法
【web自动化测试】Playwright快速入门,5分钟上手
LVS+Keepalived群集
Kotlin挂起函数原理是什么
R语言ggplot2可视化:使用ggpubr包的ggbarplot函数可视化柱状图、color参数指定柱状图的边框的色彩
Flask框架实现注册加密功能详解【Flask企业课学习】
LeetCode 899. 有序队列
DMPE-PEG-Mal,二肉豆蔻酰磷脂酰乙醇胺-聚乙二醇-马来酰亚胺简述
2019年海淀区青少年程序设计挑战活动小学组复赛试题详细答案
网页端IM即时通讯开发:短轮询、长轮询、SSE、WebSocket
JS中null与undefined的异同点
R语言dplyr包group_by函数和summarise_at函数计算dataframe计算不同分组的计数个数和均值、使用%>%符号将多个函数串起来









