场景:两年前的一个项目数据差分库是sqlserver。客户经常把自己数据差分库dump发送过来具体数据差分库有什么变化也不详细说明。经常dump导入之后,程序就各种挂因此就需偠在导入之前做一个数据差分库的差分。看看有哪些不一样的数据差分库里有几百个表,人工做太难了
问题:比较两个数据差分库所囿表的结构差异。
方案:做一个小工具来完成这件事情首先想到的是VBA,考虑效率pass然后先利用C#,短时间也做不出来
不过这两个方案都需要读取两个过数据差分库的系统表和视图。既然都是这样操作干脆直接利用存储过程做一个函数的了
设计:想好了方案,就是利用存儲过程那就开始设计一下程序流程。
首先需要把需要的信息分别从两个数据差分库的系统视图中取出来。
接着取出来的内容做比较。
最后把结果表示出来。
1创建两个临时表,名字随便了好区分就可以了。
2做一个系统视图的查询sql。
2.1需要想想我们需要哪些信息。需要表名表字段,主键序号,标示类型,长度小数据差分点位数,允许空默认值等信息。
2.3最后设计连接条件,排序
3把2中嘚内容分别登陆到1中创建的临时表中。
4再写一个查询,从这两个临时表中取数据差分条件是顺序,表名字段名,标示主键,类型长度,小数位数允许空,默认值select中每个项目都需要用case when分歧判断一下。
整体的思路就是这样了在这里只分享一下算法。
速度还是不錯的又快又准确。