pl/sql数据生成器

上一篇 / 下一篇  2013-07-18 13:24:08

今天学习了一点关于pl/sql工具中如何批量生成测试数据的方法,在这里总结一下,特此声明大部分内容是引用别人的总结成果,在此我只是记录一下自己的学习内容
1:功能介绍
   数据生成器允许你创建演示和测试数据。对于测试应用程序和查看它们怎样执行大量的数据以及在进行系统性能测试的时候,这可能是有帮助的。你可以在工具菜单的下面找到数据生成器。基本上,定义由一个或多个表、你要生成的记录数量和字段数据定义构成。左上部的按钮允许你打开和保存定义。(界面如附件所示)
2:定义
 选中“定义”选项面板
 所有者 表 记录数—前面两个是用于选择需要创建数据的表,记录数则规定本次操作要生成的数据量,可以是具体的数字,也可以是10..100这样的范围;
 名称—字段名称; 类型—字段类型;
 大小—字段长度,对于数字字段,这将是数值范围、精度;
 数据—需要生成的数据定义(下面详细描述);
 主列—如果这个表是另一个表的明细,你可以设置主列。对于每个已产生的记录,指定数量的明细记录将被生成。
 当已经选择了表时,会将该表的字段名称、字段类型、字段长度分别显示在以上对应字段,数据则需要根据生成情况自己定义。
3:数据定义
数据定义决定如何生成数据。如果你要创建简单的字符,你可以在两个方括号之间输入字符定义:[数据] 数据可以是下列预先确定的集的混合体:
a: a..z (小写字符)
A: A..Z (大写字符)
@: A..Z 和 a..z (所有字符)
#: A..Z 和 a..z 和 0..9 (所有字符和数字)
*: #33..#126 (所有 ASCII 字符)
0: 0..9 (所有数字)
1: 1..9 (所有除了 0 之外的数字)
9: 0..9 (所有数字)
例如:[aA019]则可以随机生成的数据可能为:bB028;你还可以在两个单引号之间添加文字文本。 例如: [AA '-' 1000] 生成字符串如:CX-4903 ,SY-1044 等。 在定义中空格字符是被忽略的,除非它们在引号中。如果你要一个字符重复许多次,你可以在字符的后面两个括号之间添加次数(n)。你还可以添加一个随机数(最小..最大)。例如: [Aa(5..15) ' ' Aa(8..20)] 的结果就像这样:"Masfae Qwwecdsadif" ,定义中的文字文本不必写到括号中。比如,['这事一个测试'] 和 '这是一个测试' 是等效的。不带引号的文本被认为是函数。
有几个特定的函数是可用的:
(1)Signal(Min, Max, Delta, Noise) 返回技术测定数据(像温度这样的)。Min(最小)和 Max(最大)决定了范围, Delta(△)为最大更改量,你还可以添加一些 Noise(噪声)。例如:Signal(-10, 20, 0.1, 0.1)。
(2)Random(Min, Max) 返回Min(最小)和 Max(最大)之间的随机数。如果只指定了 Max ,那么 Min 就被设为 0 。对于日期字段,你可以输入Min(最小)和 Max(最大)的日期。我试了一下发现,这种方法会产生的随机数据会重复,不能保证唯一性,对于像主键这样的,一般不适用。
(3)Sequence(Start, [Inc][WithinParent]) 返回序号。Start 为开始值,Inc 为增量(默认为 1)。对于明细表,你可以再指定WithinParent 关键词来指出序列应该为每个父记录进行重新安排。这种产生的数据可以避免重复
(4)List('item'(weight), 'item'(weight), ...) 随机地返回指定项目(item)之一。加权数(weight)可以被添加到两个括号之间,允许特定项目比其他项目出现的几率更大。
例如:List('CLERK'(50), 'SALESMAN'(30), 'MANAGER'(10))
(5)List(select statement) 像前面的 List 函数,但项目是通过 SQL select statement(select 语句)返回的。
(6)Text([Style]MaxCharacters[WordsPerLineLinesPerParagraph]) 这个函数返回文本。可选择的 Style(字体)参数可以是LorumIpsum(默认)、英语、德语或日语。它还可以是像 [aA] 这样的字符集,在这种情况下,词汇从指定的字符集中产生。MaxCharacters 决定了生成的文本的最大大小,WordsPerLine 和 LinesPerParagraph 决定了行和段落的大小。指定的大小可以是指定的数字或范围(最小..最大)。
(7)File(path, path, ...) 从特定的路径(path)中随机地选择一个文件,并插入内容。允许你输入二进制数据(像图片这样的)到数据库中。路径可以使用通配符,像 d:\images\*.bmp 这样的。
  你可以通过使用下列函数更改前面函数的文本结果:
  • Uppercase()
  • LowerCase()
  • InitCaps()
例如:InitCaps( List(select ename from emp) ) 还有几个预先定义的数据集可用于生成或多或少的真实数据。你可以使用下列定义:
  • Firstname – 一般列表中的名
  • Lastname – 一般列表中的姓
  • Company – 公司名(现有公司的随机列表)
  • Address1 – 地址行 1
  • Address2 – 地址行 2
  • ZIP – 邮政编码
  • City – 城市
  • State – 省
  • Country – 国家
  • Email (被关联到 Firstname ,Lastname 和 Country)

还有一些可用的实例自定义数据集:

  • Components.Code – 一般商品项目:商品代码
  • Components.Description – 商品描述(计算机部分)
  • Components.Price – 商品价格
  • Elements.Name – 化学元素(名称)
  • Elements.Symbol – 化学元素(符号)
   这些数据集可以在 DataGenerator\UserData 目录中找到,文件名为elements.txt 和 components.txt 。如果需要,你可以添加自己的集。添加一个逗号分隔的文件很简单,在文件中第一行两个方括号之间保存着描述。你可以通过指定“文件名.描述”来使用你的文件中的数据,就像两个例子那样。上面提及的所有函数和数据都可以添加到一起,例如:Random(10..99) + '-' + [A(4)] 。 “+”是可选的,可以用空格代替。
4:选项
   选项标签页允许你设置一些首选项,特别是数据生成器的定义。你可以指定一个日期的格式(与 Random 函数使用的例子一样)。你还可以指定在多少条记录之后需要提交( 0 表示一完成就提交)。延迟首选项仅仅用于一些实时测试,在这中你需要数据以指定的速度被插入。
  自定义部分允许你定义或越过用于[数据]定义的字符集。项目总是单个字符,值是一个或多个空格分隔的字符范围,如:A..Z a..z 0..9 #200..#220;例如要定义一个十六进制的字符集,你可以指定 H 为项目,0..9 A..F 为值。
   “初始化脚本”部分允许你指定在数据被插入到数据库中前应该被执行的 SQL 语句。在典型的情况下,这将是创建表或截短表、选择回滚段等的语句。多个语句需要用分号来分隔。通过按左边首选项按钮,在默认的情况下,对于所有数据生成器的一般选项可以被定义
5:生成数据
   开始测试运行—点击“开始测试运行”按钮,这将在结果标签页上的表格中生成数据和显示结果。通过右键单击表格,你可以以不同的格式导出这些结果。
   创建数据为 SQL – 生成数据为 SQL 脚本。这仅仅工作于你不用文件功能添加来自文件的数据的情况下。
   在数据库中创建数据 – 生成数据到 Oracle 数据库中。
6:补充说明
   我们也可以事先编辑生成数据脚本,在数据生成器中点击“打开”按钮,导入脚本文件,则数据定义中会显示数据定义及相应的表内容,例如下面的脚本文件内容
   [General]
Version=1
[Preferences]
Username=
Password=2004
Database=
DateFormat=yyyy-mm-dd
CommitCount=100
CommitDelay=0
InitScript=
[Table]
Owner=表所有者
Name=表名
Count=生成数量
[Record]
Name=字段名称1
Type=VARCHAR2
Size=16
Data=Sequence(1090200000,1)
Master=
[Record]
Name=字段名称12
Type=VARCHAR2
Size=16
Data=List(select t.dang_shi_ren_id from XZCF_J_DSR t)
Master=
[Record]
Name=字段名称3
Type=NUMBER
Size=
Data=[1000000]
Master=
[Record]
Name=字段名称4
Type=VARCHAR2
Size=16
Data=List('01','02')
Master=
[Record]
Name=字段名称5
Type=DATE
Size=
Data=Random(2012-01-01 00:00:00, 2012-10-01 00:00:00)
Master=
[Record]
Name=字段名称6
Type=VARCHAR2
Size=2
Data=List('01','02','03')
Master=
[Record]
Name=字段名称7
Type=VARCHAR2
Size=900
Data=
Master=

TAG:

 

评分:0

我来说两句

日历

« 2024-05-08  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 4728
  • 日志数: 1
  • 书签数: 1
  • 建立时间: 2013-03-27
  • 更新时间: 2013-07-18

RSS订阅

Open Toolbar