用数据库, 总是要关心数据, 数据的格式, 数据量的多少等等.
在这里谈谈构造测试数据, 构造部分符合逻辑要求的数据, 可以用于功能测试, 构造期望数量级的数据, 可以用于压力测试.
在这里先介绍数据构造中的几个简单的方法.
1. 随机数的生成. dbms_random.value & dbms_random.value(low, high)
dbms_random.value 生成的数字是在0-1之间的数字,
dbms_random.value(low, high) 生成的数字是在low-high之间的数字,
通过 round/ceil/trunc 等函数去确定所得数据的精度, 也可以直接在插入数据时由字段定义的精度来确定数据的精度.
示例:
--------------------------------------------------------------------------------
SQL> select dbms_random.value as val1,
2 dbms_random.value(1, 10) as val2,
3 round(dbms_random.value(1, 10), 2) as val3
4 from dual
5 /
VAL1 VAL2 VAL3
---------- ---------- ----------
0.80612009 9.17445487 1.95
--------------------------------------------------------------------------------
2. 随机字符串的生成. dbms_random.string(opt, len)
opt 的取值如下:
'u' or 'U': Upper case alpha characters 大写字母
'l' or 'L': Lower case alpha characters 小写字母
'a' or 'A': Upper and lower case alpha characters 下小写字母
'x' or 'X': Upper alpha and numeric characters 大写的字母和数字
'p' or 'P': Any printable character 任意可见字符
示例:
--------------------------------------------------------------------------------
SQL> select dbms_random.string('u',
as u,
2 dbms_random.string('l',
as l,
3 dbms_random.string('a',
as a,
4 dbms_random.string('x',
as x,
5 dbms_random.string('p',
as p
6 from dual;
U L A X P
---------- ---------- ---------- ---------- ----------
KNTSNCAW mymfnoyu zXyGIFcw DU7JG17K -!1yYxke
--------------------------------------------------------------------------------
3. 指定数据记录数的生成.
生成期望的记录数量, 写几个便捷常用的方法.
a) 用 connect by 来构造数据记录数
--------------------------------------------------------------------------------
select * from dual connect by rownum<=n;
--------------------------------------------------------------------------------
用这样的语句就可以生成n条记录, 适用于 9.2 或更高版本.
b) 用字典表生来生成n条记录, n小于等于字典表的记录数, 如使用dba_objects(有访问字典表权限先)
该方法适用于更多版本, 缺点是注意字典表的记录数是否足够.
--------------------------------------------------------------------------------
select rownum from dba_objects where rownum<=n;
--------------------------------------------------------------------------------
c) 运用表关联的集合运算生成n条记录, n小于等于笛卡儿乘积数. 这里的表可以使用字典表, 也可以使用用户下自建的表.
该方法适用于更多版本, 不过使用前要保证表关联后的记录数要够用.
--------------------------------------------------------------------------------
自建表tb_times,
create table tb_times (c char);
-- 放10条记录在里面, 为了方便计算记录数
begin
for i in 0..9 loop
insert into tb_times values(i);
end loop;
commit;
end;
如要通过 tb_times 来构造700条数据, 可以这样做
SQL> select count(*)
2 from tb_times t1, -- 10
3 tb_times t2, -- 10*10=100
4 tb_times t3 -- 10*10*10=1000>700
5 where rownum<=700
6 /
COUNT(*)
----------
700
或
SQL> select count(*)
2 from tb_times t1, -- 10
3 tb_times t2, -- 10*10=100
4 tb_times t3 -- [10]*10*10=1000>700
5 where t3.c<7 -- t3表使用部分记录
6 /
COUNT(*)
----------
700
--------------------------------------------------------------------------------
好了, 有了以上三个部分, 灵活的使用它们, 我们就可以构造出很多数据库所需的数据.
数据类型可以满足 char/varchar2/number/date/timestamp等常用的类型.
下面用一个示例来构造数据
col1 : 定值字段, 取值只有 'a' 一种
col2 : 枚举值字段, 取值范围为 b/c/d, 用decode转义实现
col3 : 随机的数字, 数值的取值范围在 10 ~ 100 之间, 精度为小数1位
示例中用round实现精度要求, 其他方法也可以,
如用 cast(dbms_random.value(10, 100) as number(4,1)),
或直接插入表中, 用对应字段的精度定义来确定.
col4 : 定长字符串
col5 : 不定长字符串, 允许为空, 最大长度10
col6 : 随机日期, 日期的取值范围为当前日期向前2年内
col7 : 连续时间, 起始时间后的连续时间, 时间间隔为1小时
--------------------------------------------------------------------------------
SQL> select 'a' as col1,
2 decode(trunc(dbms_random.value(0,3)),
3 0, 'b',
4 1, 'c',
5 'd'
6 ) as col2,
7 round(dbms_random.value(10, 100),1) as col3,
8 dbms_random.string('u',
as col4,
9 dbms_random.string('a', round(dbms_random.value(0,10))) as col5,
10 trunc(sysdate) - dbms_random.value(1, 365*2) as col6,
11 sysdate + interval '1' hour * (rownum-1) as col7
12 from dual
13 connect by rownum<=10;
COL1 COL2 COL3 COL4 COL5 COL6 COL7
---- ---- ----- ---------- ---------- -------------------- --------------------
a b 27.7 TTLMKTAO RVUh 2004-12-15 2:10:12 2006-7-1 20:37:56
a b 36.4 XBJTLBZT f 2006-5-9 7:20:55 2006-7-1 21:37:56
a d 30.2 RUIWQNNF RC 2005-7-3 2:30:52 2006-7-1 22:37:56
a c 64 BMWHIUYC lIwtSbUhVp 2004-9-6 21:46:19 2006-7-1 23:37:56
a b 99.5 YXWZQIKP ruuMEwcHu 2004-8-13 15:53:38 2006-7-2 0:37:56
a d 76.2 FGEYEQAG ZZa 2004-8-26 20:11:24 2006-7-2 1:37:56
a c 54.4 PSKXXWPK 2004-11-16 6:28:57 2006-7-2 2:37:56
a d 70.4 HOGNDMEW Z 2006-6-15 11:41:13 2006-7-2 3:37:56
a d 65.9 WCLTJJVU WCo 2005-5-28 3:20:14 2006-7-2 4:37:56
a b 77.6 ADWFTXOJ iSeVYTLf 2005-7-1 22:42:29 2006-7-2 5:37:56
--------------------------------------------------------------------------------
以上的数据都是构造虚拟数据, 有时我们还需要构造出仿真的数据, 比如通过基础表的数据构造流水表的数据, 方法是类似的.浅谈构造数据
分享到:
相关推荐
数据挖掘技术中,分类器构造方法是核心内容之一,它涉及到从数据中提取出有用信息并构建能够对新数据做出预测或决策的模型。分类分析旨在找到一个分类函数或模型,即分类器,这类模型能够把数据库中的数据项映射到...
"浅谈对数据迁移及割接的研究报告.pdf" 本报告对数据迁移及割接的研究进行了深入探讨,旨在保障新系统的正常运行和大量历史数据的正常使用。数据迁移是指将原信息化管理系统中的大量有效的历史数据导入到新版应用...
文章《浅谈基于数据挖掘的入侵检测技术的研究》主要探讨了如何利用数据挖掘技术来提高入侵检测系统的性能。文章指出,随着操作系统复杂性的增加和网络数据流量的快速增长,安全审计数据也呈现爆炸性的增长。这些数据...
本文详细探讨了某船医疗区空调器的构造原理及其常见故障的分析与排除。该空调器,型号为CYJ(S)-3,是专门为船舶医疗区设计的,旨在提供清洁、温湿度适宜的空气环境。它由多个组成部分构成,包括送风机、电机、蒸发器...
除了基础数据类型外,C语言还支持多种构造数据类型,包括数组、结构体和共用体。 #### 数组 数组是一种简单的数据结构,它允许在同一内存区域中连续存储多个相同类型的元素。数组元素的地址可以通过数组名加上元素...
决策树的构造可以简化复杂的数据系统,方便发现内在联系。统计分析型包括判别分析、聚类分析等,能够对数据进行分类和聚类,用于预测分析、优化决策等。 此外,数据挖掘技术还包括可视化技术、模糊技术、关联规则...
通过实践教学,学生能够理解并习惯算法构造的思维方法,并最终掌握解决问题的实践能力。教师在实践教学中应采取合理的方式,鼓励学生主动思考,尝试将抽象的数据结构知识和算法思想应用到实际问题中去,通过编程实践...
邓贤照先生在撰写《快速傅里叶变换浅谈》这本书的过程中,克服了生活困难和个人挑战,全心致力于我国的科学普及事业,他的精神令人敬佩。这本书作为一本基础教程,主要面向有一定初等微积分知识的读者,同时对于工程...
全同态加密技术的提出者Gentry在2009年通过理想格构造出了首个全同态加密方案,这一技术是目前实现数据处理安全的热点研究领域。 密文安全审计技术则是在将加密数据委托给云服务器处理时确保执行正确的计算,同时...
桥梁及构造物的相关数据计算,也可以利用Excel的强大功能进行处理。例如,通过里程、设计数据和现场测量数据,可以计算出各个关键点的位置坐标、高程,以及横坡等参数,确保工程设计与实际施工的一致性。 此外,...
- 例如,通过改变`Content-Type`字段,使用`application/x-www-form-urlencoded`类型,然后构造特殊的POST数据。这种类型的请求通常更难以被WAF检测到。 - 同样地,可以通过修改`User-Agent`、`Referer`等头部字段来...
1. **编译器自动生成**:如果类中没有显式定义任何构造函数,编译器会提供一个默认构造函数,该函数不做任何事情,即对所有数据成员进行默认初始化。 2. **用户自定义**:你可以自行定义一个不带参数的构造函数,为...
《浅谈地理信息系统的发展》 地理信息系统(GIS)是一种融合了计算机科学、地理学、测量学、地图学等多学科的综合性技术。GIS的核心在于处理和分析地理数据,包括数据的输入、输出、管理、查询和分析,为决策提供...
因此,当对象的方法需要操作其内部数据时,构造函数内部的方法是比较合适的选择。 然而,如果把方法定义在构造函数内部,每当通过构造函数创建新对象时,这些方法都会被重新创建并添加到新对象上。这种方式在处理...
通过源代码的修改和自编程序的集成,学生可以构造新的专用工具包。本模块重视程序设计的逻辑思维和实现技巧,帮助学生掌握程序结构的设计、调试和优化。 在教学实践中,李豪讲师提出提高学生程序设计能力的途径,...
### 浅谈Java输入输出流 #### 一、引言 Java作为一种广泛应用的编程语言,在处理数据时提供了非常强大且灵活的输入输出功能。然而,Java的输入输出操作可能看起来较为复杂,因为开发者通常需要处理多种不同的对象...
结构游戏作为其中一种类型,利用可构造的材料,让幼儿进行象征性的建筑活动,有利于锻炼他们的空间认知和问题解决能力。 【幼儿区域游戏中深度学习的问题观察与分析】 在实际操作中,我们发现幼儿在区域游戏中存在...