我们有时候为了性能测试需要制造数据,那么就可以使用PL/SQL里自带的数据生成器 Data generator。
数据定义
数据定义决定了被生成的数据。如果要创建简单的字符,可以在两个方括号之间输入字符定义:[数据]
数据可以是下列预先确定的集的混合体:
• 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 (所有数字)
例如:
[Aaa00] 生成字符串如: Gxe21,Liy05 等。
还可以在两个单引号之间添加文字文本。
例如:
[AA ‘-‘ 1000] 生成字符串如:CX-4903,SY-1044 等。
在定义中空格字符是被忽略的,除非它们在引号中。
如果要一个字符重复许多次,可以在字符的后面两个括号之间添加次数(n)。还可以添加一个随机数(最小..最大)。
例如:
[Aa(5..15) ‘ ‘ Aa(8..20)] 的结果就象这样:"Masfae Qwwecdsadif"
定义中的文字文本不必被装入到括号中。换句话说,[‘hello‘] 和 ‘hello‘ 是等效的。不带引号被输入的文本被认为是函数。
有几个特定的函数是可用的:
•Signal(Min, Max, Delta, Noise)返回技术测定数据(象温度这样的)。Min(最小)和 Max(最大)决定了范围, Delta(△)为最大更改量,还可以添加一些 Noise(噪声)。例如:Signal(-10, 20, 0.1, 0.1)。
•Random([Min], Max)返回Min(最小)和 Max(最大)之间的随机数。如果只指定了 Max ,那么 Min 就被设为 0 。对于日期字段,可以输入Min(最小)和 Max(最大)的日期。
•Sequence(Start, [Inc], [WithinParent])返回序号。Start 为开始值,Inc 为增量(默认为 1)。对于明细表,可以再指定 WithinParent 关键词来指出序列应该为每个父记录进行重新安排。
•List(‘item‘(weight), ‘item‘(weight), ...)随机地返回指定项目(item)之一。加权数(weight)可以被添加到两个括号之间,允许特定项目比其他项目出现的几率更大。 例如:List(‘CLERK‘(50), ‘SALESMAN‘(30), ‘MANAGER‘(10))
•List(select statement) 象前面的 List 函数,但项目是通过 SQL select statement(select 语句)返回的。
• Text([Style], MaxCharacters, [WordsPerLine, LinesPerParagraph])这个函数返回文本。可选择的 Style(字体)参数可以是 LorumIpsum(默认)(怀疑是荷兰语。——译者姜华东注)、英语、德语或日语。它还可以是象 [aA]这样的字符集,在这种情况下,词汇从指定的字符集中产生。 MaxCharacters 决定了生成的文本的最大大小,WordsPerLine 和 LinesPerParagraph 决定了行和段落的大小。指定的大小可以是指定的数字或范围(最小..最大)。
• 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)]。 “+”是可选的,但那中至少应该有一个空格作为分隔符。
选项
选项标签页允许设置一些首选项,特别是数据生成器的定义。可以指定一个日期的格式(与被 Random 函数使用的例子一样)。还可以指定在多少条记录之后需要提交(设为 0 是一完成就提交)。延迟首选项仅仅用于一些实时测试,这中需要数据以指定的速度被插入。
Example:
List(‘1‘) + [0(10..10)] - 1开头,后面十位数字从0~9内随机选取
Random(2000/01/01, 2000/12/12) - 日期在这两个日期之间随机选取