51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2827|回复: 0
打印 上一主题 下一主题

ETL测试之构造标准数据集(-)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-12-30 19:53:45 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 樱花季节 于 2010-12-31 09:25 编辑


ETL测试过程中,构造标准数据集往往是很关键和复杂的一个环节。
目前我们的标准数据集的构造通常包括两个部分:
一部分是造一批基础数据,包括空值,边界值,中文,乱码,特殊符号,负数,小数等。
一部分是造业务数据。
针对第一部分,如果是单纯手工造数据,效率不高,且还容易出错,这里我写了一个比较通用的过程,用来批量造数据。

代码包如下:
create or replace package PKG_GENERATEDATA is

  -- Author  : XIANGMIN.MENGXM
  -- Created : 2009-6-24 下午 03:43:05
  -- Purpose : 生成数据
  /* CREATE TABLE COL_TYPE_TABLE
  (
  col_type VARCHAR2(100),
  col_value VARCHAR2(100)
  );
INSERT INTO COL_TYPE_TABLE VALUES('NUMBER',NULL);
INSERT INTO COL_TYPE_TABLE VALUES('NUMBER',0);
INSERT INTO COL_TYPE_TABLE VALUES('NUMBER',-1);
INSERT INTO COL_TYPE_TABLE VALUES('NUMBER',-1.123456);
INSERT INTO COL_TYPE_TABLE VALUES('VARCHAR2',NULL);
INSERT INTO COL_TYPE_TABLE VALUES('VARCHAR2','ABC');
INSERT INTO COL_TYPE_TABLE VALUES('VARCHAR2','????');
INSERT INTO COL_TYPE_TABLE VALUES('DATE','20100606');
INSERT INTO COL_TYPE_TABLE VALUES('DATE',NULL);
  */

  type array1 is table of VARCHAR2(32767) index by pls_integer;--定义一维数组
  type array2 is table of array1 index by pls_integer;--定义二维数组

  TYPE record_cols IS RECORD(column_name VARCHAR2(100),
                               data_type VARCHAR2(100),
                             data_length NUMBER,
                             data_precision NUMBER,
                             data_scale NUMBER,
                               nullable VARCHAR2(100));

  TYPE type_cols IS TABLE OF record_cols INDEX BY PLS_INTEGER;--定义嵌套表


  PROCEDURE OPERATOR(
  /*********************************************************************
  *功能:自动生成数据的总调度存储过程
  *parameter:
  *作者:XIANGMIN.MENGXM
  *时间:2009-6-26
  *备注:
  *********************************************************************/
  p_owner IN VARCHAR2, --预生成表的所有者
  p_table_name IN VARCHAR2--预生成表名
  );

end PKG_GENERATEDATA;

使用步骤:
1. 在数据库中创建一张保存数据类型与值的映射表
CREATE TABLE COL_TYPE_TABLE
  (
  col_type VARCHAR2(100),
  col_value VARCHAR2(100)
  );
2. 在COL_TYPE_TABLE表中插入数据类型与值
INSERT INTO COL_TYPE_TABLE VALUES('NUMBER',NULL);
INSERT INTO COL_TYPE_TABLE VALUES('NUMBER',0);
INSERT INTO COL_TYPE_TABLE VALUES('NUMBER',-1);
INSERT INTO COL_TYPE_TABLE VALUES('NUMBER',-1.123456);
INSERT INTO COL_TYPE_TABLE VALUES('VARCHAR2',NULL);
INSERT INTO COL_TYPE_TABLE VALUES('VARCHAR2','ABC');
INSERT INTO COL_TYPE_TABLE VALUES('VARCHAR2','????');
INSERT INTO COL_TYPE_TABLE VALUES('DATE','20100606');
INSERT INTO COL_TYPE_TABLE VALUES('DATE',NULL);
这里我为number类型准备了null,0,-1等值。
类型是oracle中数据类型,如:number,varchar2,date等。想要给指定类型造自己想要的数据,只需要在此表中添加对应的类型和值即可。
3. 下载附件中 基础数据生成.rar,编译。
4. 调用。
SQL>PKG_GENERATEDATA.OPERATOR('p_owner','p_table_name');--p_owner是造数据表的schema,p_table_name是造数据的表名
5.查看构造的数据
SQL>SELECT/*+ parallel(a 4)*/ * FROM p_table_name a;

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-25 20:50 , Processed in 0.071131 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表