BI测试工具之跨数据库数据对比,支持oracle,sqlserver

应用场景:

本周在进行SIT,我帮助仅有的一个测试妹妹对部分表进行数据质量验证,第一步需要做的就是比对source与stage表的table definition 与 数据内容的一致性。

本项目使用的是oracle作为DW,source是oracle,sqlserver和xls.

没有权限建立database link, 测试们常用的方法是比对总行数,然后如果数据集太大的话,则抽样比对,导出数据到xls,然后使用beyondcompare进行比对。

如果值出现不同,则需要查找出哪些行的值不同,最少要找出一条具体的值。

我测试的时候发现,手动去做这一些事也是挺费力的。就写了以下的小工具进行辅助测试。

功能:

1.支持从oracle,sqlserver,xls中取数据进行比对。

2.对oracle与sqlserver,可采用传统的比对,各自获取一个readonly ,forward 胡datareader,逐行比对。点击CompareData按钮。

3.对于oracle与oracle的query比对,可以使用GetDiffRange按钮,即二分查找法进行比对。

测试数据如下:

在oracle的数据库中执行以下代码,生成测试数据。

declare i integer :=1;

begin

while i<110000 loop

insert into mytest(ID,RID,NAME) VALUES(mysequence.nextval,i,‘dataitem‘||i);

i:=i+1;

end loop;

end ;

insert into mytest2 SELECT * FROM mytest order by id;

update mytest2 set rid=100 where id=100000; commit;

select * from mytest minus select * from mytest2;

select count(*) as totalcount, to_char(avg(ora_hash(id||rid ||name))) as avghash from (select id as rn, t.* from mytest t)

select count(*) as totalcount, to_char(avg(ora_hash(id||rid ||name))) as avghash from (select id as rn, t.* from mytest2 t)

update mytest2 set name=‘EvanTEst‘ where id=1000;

commit;

Range:可以自己设定,如果是1的话,则直接定位到第一条不同的记录,如果是大于1 则是一个区间值。

表示不同的数据行就是在他们之间。

为了同时支持oracle和sqlserver,我使用库中自带的接口IDbConnection和IDataReader进行开发,可以同时支持oracle和sqlserver.暂时没有实现读取xls.

sql要求:

二分查找需要样本有序,所以需要写成

select count(*) as totalcount, to_char(avg(ora_hash(id||rid ||name))) as avghash from (select id as rn, t.* from mytest t)

的样式,第一个是总行数,第二个要求是里面需要有一个固定列名叫rn。

我使用ora_hash函数对每行的值进行hash,然后求平均值的方式来计算表区间内行的内容是否相同,这是oracle提供的函数。

类似的有函数checksum,但是计算速度要比这个慢许多,尤其是表数据量大的时候。

sqlserver中有hashbyte函数类似。 注意如果不使用to_char函数,则算出的值会溢出,如果放到.net中来承接,会报oci数据溢出的错误,所以to_char也是必须的。

欢迎大家分享BI测试的一些经验心得。

软件下载地址:   files.cnblogs.com/huaxiaoyao/datacompare.rar

时间: 2024-11-05 14:45:33

BI测试工具之跨数据库数据对比,支持oracle,sqlserver的相关文章

『数据库』随手写了一个 跨数据库 数据迁移工具

随手写了一个 跨数据库 的 数据迁移工具:>目前支持 SQLServer,MySql,SQLite: >迁移工具 可以自动建表,且 保留 主键,自增列: >迁移工具 基于 Laura.Source  ORM框架 开发: >迁移工具 支持 崩溃恢复(重启迁移工具,将会继续 未完成的 数据迁移): >每张表一个事务(即使  表中有 >100W 的数据,也是一个事务完成): >迁移后 的 自增列 和 原数据库 保持一致: 只是展示一下,直接上图片: 操作工具: 迁移工具

Oracle Job定时任务详解、跨数据库数据同步

业务需求,需要与A公司做数据对接,我们公司用的Oracle,A公司用的SQL Server数据库,如何跨数据库建立连接呢?这里使用的是DBLink,不会配置的请看我的另外一篇博客:https://www.cnblogs.com/chenyanbin/p/11291752.html 如果做数据同步呢?上面我们已经通过DBLink与SQL Server建立连接了,那么我们就可以获取A公司表中的数据.在通过Oracle Job定时任务,具体JOB还有那些功能,这里不做详细介绍了,百度上一大堆,这里我们

跨数据库数据交流

通常情况下,我们的CRUD操作都在单一数据库中进行.但是,也可能会遇到需要进行跨数据交流的情况.对此,我以跨数据库进行表的访问为例,稍微总结了下. 一.同SQL SERVER 这个最简单.直接在表名前加上"[数据库名]."就可以了. 例: SELECT * FROM [DestinationDBName].dbo.DestinationTableName 二.跨SQL SERVER 主要介绍两种方法: (一)通过链接服务器 1.先执行系统存储过程 sp_addlinkedserver

OPENDATASOURCE读取远程数据库数据中文乱码问题-sqlserver R2

insert into kraft_sync_Store(StoreName,StoreCode,Province,PrefectureCity,CountyCity,Region,Area,Unit,HQKA,KAName,StoreType,IsValid,ContactPerson,MobileTelephone,Telephone,Address,Latitude,Longitude,regiongroup,sfastoremanagername) Select CAST(storena

MS SQLServer数据库结构及数据对比

关键词:SQLServer.表结构对比.数据对比.按行对比数据 简介 数据库数据对比工具(MSSQL版)是针对MS SQL Server的一款小工具,可以针对两个数据进行表结构和数据的对比. 1.表结构对比:如开发库和正式库之间的结构和数据同步,此工具可以告诉您哪个表结构有字段的增加减少,或者字段类型的改变,并生成sql进行结构的同步. 2.数据对比:如对比两个数据库中的某个表的数据差异,有差异的行会用颜色进行标记,可生成sql脚本进行两个库的同步. 下载地址 下载地址:http://www.v

测试工具的选择和使用

2003年第9期<程序员>上啄木鸟部落发文“测试工具的选择和使用”,现将其中的工具列表摘录,以备忘 Parasoft白盒测试工具集 工具名 支持语言环境 简介 Jtest Java 代码分析和动态类.组件测试 Jcontract Java 实时性能监控以及分析优化 C++ Test C,C++ 代码分析和动态测试 CodeWizard C,C++ 代码静态分析 Insure++ C,C++ 实时性能监控以及分析优化 .test .Net 代码分析和动态测试 Compuware白盒测试工具集 工

mysql之 mysql数据库压力测试工具(mysqlslap)

mysqlslap是从MySQL的5.1.4版开始就开始官方提供的压力测试工具.通过模拟多个并发客户端并发访问MySQL来执行压力测试,同时提供了较详细的SQL执行数据性能报告,并且能很好的对比多个存储引擎(MyISAM,InnoDB等)在相同环境下的相同并发压力下的性能差别. mysqlslap官方文档: https://dev.mysql.com/doc/refman/5.6/en/mysqlslap.html Table 4.14 mysqlslap Options Format Desc

mysqlslap 一个MySQL数据库压力测试工具

在Xen/KVM虚拟化中,一般来说CPU.内存.网络I/O的虚拟化效率都非常高了,而磁盘I/O虚拟化效率较低,从而磁盘可能会是瓶颈.一般来说,数据库对磁盘I/O要求比较高的应用,可以衡量一下在客户机中运行MySQL.Oracle等数据库服务的性能(不过我知道也有在客户机中运行数据库服务器,效率也还可接受).本文不介绍MySQL在虚拟机中的性能表现情况(也许今后会考虑),而是介绍一个MySQL数据库的压力测试工具--msqlslap. mysqlslap是从MySQL的5.1.4版开始就开始官方提

数据库相关文章转载(2) MySQL自带的性能压力测试工具mysqlslap详解

PS:今天一同事问我有木有比较靠谱的mysql压力测试工具可用.其实mysql自带就有一个叫mysqlslap的压力测试工具,还是模拟的不错的.下面举例说说.mysqlslap是从5.1.4版开始的一个MySQL官方提供的压力测试工具.通过模拟多个并发客户端访问MySQL来执行压力测试,同时详细的提供了“高负荷攻击MySQL”的数据性能报告.并且能很好的对比多个存储引擎在相同环境下的并发压力性能差别.通过mysqlslap –help可以获得可用的选项,这里列一些主要的参数,更详细的说明参考官方