在oracle中自动大批量生成测试数据

摘要:
这有助于测试应用程序并了解它们如何执行大量数据。对于每个生成的记录,将生成指定数量的详细记录。不带引号输入的文本被视为函数。信号返回技术测量数据。MaxCharacters决定生成文本的最大大小,WordsPerLine和LinesPerParagraph决定行和段落的大小。InitCap()例如,InitCap有几个预定义的数据集,可用于生成或多或少的真实数据。还有一些实例自定义数据集可用于电子邮件:?
方法1:
SQL> create table b as select 1 id from dual connect by level<=100; 
 
方法2:
 
SQL> create table a (id int);
 
Table created.
 
SQL> insert into a select 1 from dual connect by level<=100;  
 
100 rows created.
 
 
方法三:
 
create table test_big as select * from all_objects;
insert into test_big as select * from test_big ;
insert into test_big as select * from test_big ;
insert into test_big as select * from test_big ;
insert into test_big as select * from test_big ;
 
方法四:
 
create table big_table(a int,b char(3));
declare
i int;
begin
for i in 1..10000 loop
insert /*+ append */ into big_table nologging values(i,'sex');
if mod(i,1000)=0 then
commit;
end if;
end loop;
end;
 
PLSQL Develope手册上的说明,供参考,可以去下本手册来看看
 
数据生成器
数据生成器允许你创建演示和测试数据。对于测试应用程序和查看它们怎样执行大量的数据,这可能是有帮助的。你可以在工具菜单的下面找到数据生成器。
基本上,定义由一个或多个表、你要生成的记录数量和字段数据定义构成。左上部的按钮允许你打开和保存定义。
在上面,你可以看到被提供的 deptemp 演示,这个演示是为 deptdemo 和 empdemo 表创建数据,这类似于大家都知道的 dept 和 emp 表。在这一页里,你将发现下列项目: 
? 表 - 表的名称。 
? 记录数 - 你要生成的记录数。这可以是数字,也可以是象 10..100 这样的范围。 
? 名称 - 字段名称。 
? 类型 - 字段的数据类型。 
? 大小 - 字段大小(在适当的时候)。对于数字字段,这将是数值范围、精度。 
? 数据 - 字段数据的定义(见下面)。 
? 主列 - 如果这个表是另一个表的明细,你可以设置主列。对于每一个已产生的记录,指定数量的明细记录将被生成。 
 
你可以使用“添加现有表”按钮来添加一个现有的表,你还可以从对象浏览器里拖放一个表。 
数据定义
数据定义决定了被生成的数据。如果你要创建简单的字符,你可以在两个方括号之间输入字符定义:[数据] 166 PL/SQL Developer 7.0 用户指南 
数据可以是下列预先确定的集的混合体: 
? 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)) 
PL/SQL Developer 7.0 用户指南 167 
 
? 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 。如果需要,你可以添加自己的集。添加一个逗号分隔的文件很简单,在文件里第一行两个方括号之间保存着描述。你可以通过指定“文件名.描述”来使用你的文 件里的数据,就象两个例子那样。 168 PL/SQL Developer 7.0 用户指南 
上面提及的所有函数和数据都可以添加到一起,例如:Random(10..99) + '-' + [A(4)] 。 “+”是可选的,但那里至少应该有一个空格作为分隔符。 
选项
选项标签页允许你设置一些首选项,特别是数据生成器的定义。你可以指定一个日期的格式(与被 Random 函数使用的例子一样)。你还可以指定在多少条记录之后需要提交(设为 0 是一完成就提交)。延迟首选项仅仅用于一些实时测试,在这里你需要数据以指定的速度被插入。 
自定义部分允许你定义或越过被用于 [数据] 定义的字符集。项目总是单个字符,值是一个或多个空格分隔的字符范围,就象这样:A..Z a..z 0..9 #200..#220 。例如,要定义一个十六进制的字符集,你可以指定 H 为项目,0..9 A..F 为值。 
“初始化脚本”部分允许你指定在数据被插入到数据库里前应该被执行的 SQL 语句。在典型的情况下,这将是创建表或截短表、选择回滚段等等的语句。多个语句需要用分号来分隔。 
通过按左边首选项按钮,在默认的情况下,对于所有数据生成器的一般选项可以被定义。要了解更多详细资料,请看第 16.23 章。如果数据生成器定义里相应的首选项也被设置了,这些首选项将被否决。 
生成数据 
在左下方有三个按钮可用于生成实际的数据: 
? 开始测试运行 - 这将在结果标签页上的表格里生成数据和显示结果。通过右击表格,你可以以不同的格式导出这些结果。 
? 创建数据为 SQL - 生成数据为 SQL 脚本。这仅仅工作于你不用文件功能添加来自文件的数据的情况下。 
PL/SQL Developer 7.0 用户指南 169 
 
? 在数据库里创建数据 - 生成数据到 Oracle 数据库里。

免责声明:文章转载自《在oracle中自动大批量生成测试数据》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇nodeJS环境搭建Arduino Wire.h(IIC)库函数详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

thinkphp 对数据库的操作

   框架有时会用到数据库的内容,在"ThinkPhp框架知识"的那篇随笔中提到过,现在这篇随笔详细的描述下。 数据库的操作,无疑就是连接数据库,然后对数据库中的表进行各种查询,然后就是对数据的增删改的操作,一步步的讲述一下框架对数据库的操作 想要操作数据库,第一步必然是要:链接数据库 一、链接数据库 (1)找到模块文件夹中的Conf文件夹,然后进行编...

查看Mysql正在执行的事务、锁、等待

一、关于锁的三张表(MEMORY引擎) ## 当前运行的所有事务 mysql> select * from information_schema.innodb_trxG; *************************** 1. row *************************** trx_id: 613963...

ORACLE 判断首字母大小写问题

1.对判断的字段进行拆分 select  substr(要区分的字段,0,1)  from 表 ; 得到一个 首字母 2.对这个字符进行大小写判断 查出以小写字符为开头的 select  substr(要区分的字段,0,1)  from 表  where  substr(要区分的字段,0,1)=lower((substr(要区分的字段,0,1) )) ;...

关于oracle 数据库效率的优化

最近项目快要快要结束了,我们最终还是要面对我们一直存在的问题,就是数据库查询编码的问题,但是通过各个方面观察我们发现数据库仅仅200w条数据查询议一天的数据也就仅仅不到两万条数据没结果查了将近两分钟,这按章正常状态来讲那是不可能出现的情况,但是经过很久的观察我们还是找到了原因,那就是我们在做sql语句编写的时候那是不合理的 接下来我就给大家罗列一下相关情况...

python3 爬虫之爬取安居客二手房资讯(第一版)

#!/usr/bin/env python3 # -*- coding: utf-8 -*- # Author;Tsukasa import requests from bs4 import BeautifulSoup import pandas import time url_all = [] url_in = input('输入你所需...

靶场sql注入练手----sqlmap篇(纯手打)

靶场地址:封神台 方法一、首先尝试手工找注入点判断 第一步,判断是否存在sql注入漏洞 构造 ?id=1 and 1=1 ,回车,页面返回正常 构造 ?id=1 and 1=2 ,回车,页面不正常,初步判断这里 可能 存在一个注入漏洞   第二步:判断字段数 构造 ?id=1 and 1=1 order by 1 回车,页面正常 构造 ?id=1 and...