SQLSERVER中如何快速比较两张表的不一样
来源:互联网 发布:教育部网络教育 编辑:程序博客网 时间:2024/05/21 16:58
一般来说,如何检测两张表的内容是否一致,体现在复制的时候发布端和订阅端的两端的数据上面
我这里罗列了一些如何从数据库层面来解决此类问题的方法
第一步当然就是检查记录数是否一致,否则不用想其他方法了~
这里我们用两张表t1_old,t1_new来演示
方法介绍
方法一:老老实实看表结构和表记录数,弊端是根本看不到两张表的数据是否一致,只是看到表结构和记录数是否一致
方法二:加法去重 union 运算符排除重复的,但是有bug,在某些情形下不能简单表示结果集一致,相当于无效
由于Union 本身具备把上下两条连接的记录做唯一性排序,所以这样检测起来比较简单
两表数据
查询出来的结果是4
方法三:EXCEPT 减法归零
这里检测出来结果不对,那么就直接给出不一致的结论
方法四:用全表INNER JOIN,这个也是最烂的做法,当然这里指的是在表记录数超级多的情况下
方法五:借助SQLSERVER自带的tablediff工具,当初微软制作这个工具的目的就是用于比较复制中发布表和订阅表的数据一致
identical是相等的意思
方法六:借助发布端的验证订阅功能,验证订阅端跟发布端的数据是否一致
方法七:用checksum校验,比较两张表里的内容的checksum值是否一致
但是这种方法也只局限于两表结构一摸一样
我把[t1_new]表的数据复制到一张新的表以便进行比较
总结
从上面几种数据库提供的方法来看,用EXCEPT减法来归零相对来说比较可靠,其他的方法比较适合在特定的情形下来检测
0 0
- SQLSERVER中如何快速比较两张表的不一样
- SQL Server中如何快速比较两张表的不一样
- MS SQLSERVER中如何快速获取表的记录总数
- MS SQLSERVER中如何快速获取表的记录总数
- MS SQLSERVER中如何快速获取表的记录总数
- MS SQLSERVER中如何快速获取表的记录总数
- MS SQLSERVER中如何快速获取表的记录总数
- 用java比较两个集合对象中不一样的元素。
- SQLServer中Datetime类型数据的比较
- SQLServer中Datetime类型数据的比较
- MS SQLSERVER 2000 中如何快速获取表的记录总数
- Python3.5 实现xml 文件比较,比较pom.xml 中引用不一样的地方
- 如何在Word2010中设置不一样的稿纸
- 如何在SQLSERVER中快速有条件删除海量数据
- 如何在SQLSERVER中快速有条件删除海量数据
- 如何在SQLSERVER中快速有条件删除海量数据
- 如何在SQLSERVER中快速有条件删除海量数据
- 如何在SQLSERVER中快速有条件删除海量数据
- 添加第三方类库造成的linker command failed with exit code 1 (use -v to see invocation)的错误
- Mac环境下svn的使用
- ajax表单提交上传文件(异步上传与文本编辑器)
- Implement strStr()
- Xcode 6制作动态及静态Framework
- SQLSERVER中如何快速比较两张表的不一样
- printf 和scanf 的使用范围
- mac上安装MySQL
- JAVA学习笔记(三十一)- 对象序列化Serializable
- java中线程阻塞之sleep、suspend、join、wait、resume、notify方法解析(一)
- 提高老人对养老服务的满意度
- 外贸版商城系统助企业搭乘跨境电商快车
- Android中MediaButtonReceiver广播监听器的机制分析
- 约瑟夫环与二叉树问题java