• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

如何使用Sql生成测试数据

发布: 2009-4-16 10:18 | 作者: 不详 | 来源: 测试时代采编 | 查看: 107次 | 进入软件测试论坛讨论

领测软件测试网

5+7+9=21 行。由于我们没有指定任何连接条件,所以第一个结果集中的每一行将会连接第二个中的每一行,从而产生 57*21 行。

注意:交叉连接可能会生成太多行。因此,该事务将太大,以致服务器无法处理。本例中,您可能需要几个较小一些的 INSERT 语句,例如在第一个 INSERT 中使用以下表表达式:

(SELECT SIZE FROM SIZE_FREQUENCY JOIN CONSECUTIVE_NUMBER ON NUM BETWEEN 1 AND FREQUENCY AND SIZE='L') S

并且在第二个 INSERT 语句中将这个表表达式修改为:

(SELECT SIZE FROM SIZE_FREQUENCY JOIN CONSECUTIVE_NUMBER ON NUM BETWEEN 1 AND FREQUENCY AND SIZE<>'L') S 生成具有相关列的数据 假定我们需要生成几行记录来填充 CAR 表: CREATE TABLE CAR(
MAKE VARCHAR(20) NOT NULL,
MODEL VARCHAR(20) NOT NULL,
OTHER_DATA VARCHAR(20));

如果尝试前一章中的方法,我们最后将获得一些不可能的 MAKE/MODEL 组合,例如“TOYOTA METRO”和“GEO CAMRY”。该状况称作 MAKE 列和 MODEL 列之间的相关性。正确的方法是指定有效对(MAKE,MODEL)及其频率:

CREATE TABLE MAKE_MODEL_FREQUENCY(MAKE VARCHAR(20), MODEL VARCHAR(20), FREQUENCY SMALLINT);
INSERT INTO MAKE_MODEL_FREQUENCY VALUES
('TOYOTA','CAMRY', 40), ('HONDA','ACCORD',40), ('CHEVY', 'PRIZM', 5), ('GEO','PRIZM', 5),
('CHEVY', 'METRO', 5), ('GEO', 'METRO', 10); 一旦完成该工作,我们就可以按照前面一模一样的方法来连接 CONSECUTIVE_NUMBER 和 MAKE_MODEL_FREQUENCY 表了。 操纵群集因子 表的物理行次序将影响该表上几乎所有查询的性能。因此,所生成的数据具有理想的物理行次序是极其重要的。如果您期望一个索引具有较高的群集因子,就只要重组该索引上的表。相反,如果您期望该索引具有较低的群集因子,也可以容易地以随机次序来打乱该表的次序,从而使得该索引的群集因子接近于 0: CREATE TABLE NAMES(
FULL_NAME VARCHAR(50) NOT NULL,
ORDERED_ON INT);

INSERT INTO NAMES(FULL_NAME, ORDERED_ON)
SELECT TABNAME || ', ' || COLNAME AS FULL_NAME,
SYSFUN.RAND() * 10000 AS ORDERED_ON
FROM SYSCAT.COLUMNS;

CREATE INDEX NAMES_FULL_NAME ON NAMES(FULL_NAME);
CREATE INDEX NAMES_ORDER ON NAMES(ORDERED_ON);
REORG TABLE DB2ADMIN.NAMES INDEX DB2ADMIN.NAMES_ORDER;
RUNSTATS ON TABLE DB2ADMIN.NAMES AND DETAILED INDEXES ALL;

在进行重组之后,索引 NAMES_FULL_NAME 将具有一个极低的群集因子(接近于 0),因为现在的行是以随机次序存储的。

注意:还可以重组该表,以使索引 NAMES_FULL_NAME 的群集因子接近 0 到 1 之间的任何给定值,但是,该内容超出了本文的范围。

结束语: 本文讨论了如何构建一个测试数据集,以使该数据集达到用于测试的规模,并且具有期望的值分布和列间相关性。 参考资料: 关于用表表达式获得灵活性和性能的示例,请阅读专家会谈:Sheryl Larsen 谈表表达式的威力(developerWorks,2002 年 4 月)。

从 Amazon.com 获得Joe Celko 的 SQL for Smarties: Advanced SQL Programming。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

33/3<123

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网