?
轉(zhuǎn)自: http://www.cnblogs.com/Automation_software/archive/2011/01/27/1946366.html
Oracle大數(shù)據(jù)量數(shù)據(jù)生成器Data Generator的使用
首先測試環(huán)境建立: dept 表
CREATE TABLE ?dept
??????( deptno??? NUMBER ( 6 ),
????????dname???? VARCHAR2 ( 20 ),
????????loc??????? VARCHAR2 ( 20 ));
???? 以下實(shí)驗(yàn)就是像 dept 表中插入大量的數(shù)據(jù)。
數(shù)據(jù)生成器允許創(chuàng)建演示和測試數(shù)據(jù)。對于測試應(yīng)用程序和查看它們怎樣執(zhí)行大量的數(shù)據(jù),這很有幫助的。可以在 PL/SQL Developer 的工具菜單的下面找到數(shù)據(jù)生成器: Data Generator 。
基本上,定義由一個(gè)或多個(gè)表、要生成的記錄數(shù)量和字段數(shù)據(jù)定義構(gòu)成。左上部的按鈕允許打開和保存定義。
?
在上面,可以看到提供的 ?dept 演示,這個(gè)演示是為 ?dept 表創(chuàng)建數(shù)據(jù)。在這一頁中,發(fā)現(xiàn)有下列項(xiàng)目:
?????????? ?表? – 表的名稱。
?????????? ?記錄數(shù)? – 要生成的記錄數(shù)。這可以是數(shù)字,也可以是象 ?10..100? 這樣的范圍。
?????????? ?名稱? – 字段名稱。
?????????? ?類型? – 字段的數(shù)據(jù)類型。
?????????? ?大小? – 字段大小(在適當(dāng)時(shí))。對于數(shù)字字段,這將是數(shù)值范圍、精度。
?????????? ?數(shù)據(jù)? – 字段數(shù)據(jù)的定義(見下面)。
?????????? ?主列? – 如果這個(gè)表是另一個(gè)表的明細(xì),可以設(shè)置主列。對于每個(gè)已產(chǎn)生的記錄,指定數(shù)量的明細(xì)記錄將被生成。
我們可以使用 “ 添加現(xiàn)有表 ” 按鈕來添加一個(gè)現(xiàn)有的表,還可以從對象瀏覽器中拖放一個(gè)表。
數(shù)據(jù)定義
數(shù)據(jù)定義決定了被生成的數(shù)據(jù)。如果要?jiǎng)?chuàng)建簡單的字符,可以在兩個(gè)方括號(hào)之間輸入字符定義: [ 數(shù)據(jù) ]
數(shù)據(jù)可以是下列預(yù)先確定的集的混合體:
?????????? ??? a: a..z ( 小寫字符 )
?????????? ??? A: A..Z ( 大寫字符 )
?????????? ??? @: A..Z? 和 ?a..z ( 所有字符 )
?????????? ??? #: A..Z? 和 ?a..z? 和 ?0..9 ( 所有字符和數(shù)字 )
?????????? ??? *: #33..#126 ( 所有 ?ASCII? 字符 )
?????????? ??? 0: 0..9 ( 所有數(shù)字 )
?????????? ??? 1: 1..9 ( 所有除了 ?0? 之外的數(shù)字 )
?????????? ??? 9: 0..9 ( 所有數(shù)字 )
?
例如:
[Aaa00]? 生成字符串如: ?Gxe21 , Liy05? 等。
還可以在兩個(gè)單引號(hào)之間添加文字文本。
例如:
[AA '-' 1000]? 生成字符串如: CX-4903? , SY-1044? 等。
在定義中空格字符是被忽略的,除非它們在引號(hào)中。
如果要一個(gè)字符重復(fù)許多次,可以在字符的后面兩個(gè)括號(hào)之間添加次數(shù) (n) 。還可以添加一個(gè)隨機(jī)數(shù) ( 最小 .. 最大 ) 。
例如:
[Aa(5..15) ' ' Aa(8..20)]? 的結(jié)果就象這樣: "Masfae Qwwecdsadif"
定義中的文字文本不必被裝入到括號(hào)中。換句話說, ['hello']? 和 ?'hello'? 是等效的。不帶引號(hào)被輸入的文本被認(rèn)為是函數(shù)。
有幾個(gè)特定的函數(shù)是可用的:
?????????? ? Signal(Min, Max, Delta, Noise)? 返回技術(shù)測定數(shù)據(jù)(象溫度這樣的)。 Min (最小)和 ?Max (最大)決定了范圍, ?Delta (△)為最大更改量,還可以添加一些 ?Noise (噪聲)。例如: Signal(-10, 20, 0.1, 0.1) 。
?????????? ? Random([Min], Max)? 返回 Min (最小)和 ?Max (最大)之間的隨機(jī)數(shù)。如果只指定了 ?Max? ,那么 ?Min? 就被設(shè)為 ?0? 。對于日期字段,可以輸入 Min (最小)和 ?Max (最大)的日期。
?????????? ? Sequence(Start, [Inc], [WithinParent])? 返回序號(hào)。 Start? 為開始值, Inc? 為增量(默認(rèn)為 ?1 )。對于明細(xì)表,可以再指定 WithinParent? 關(guān)鍵詞來指出序列應(yīng)該為每個(gè)父記錄進(jìn)行重新安排。
?????????? ? List('item'(weight), 'item'(weight), ...)? 隨機(jī)地返回指定項(xiàng)目( item )之一。加權(quán)數(shù)( weight )可以被添加到兩個(gè)括號(hào)之間,允許特定項(xiàng)目比其他項(xiàng)目出現(xiàn)的幾率更大。 例如: List('CLERK'(50), 'SALESMAN'(30), 'MANAGER'(10))
? List(select statement)? 象前面的 ?List? 函數(shù),但項(xiàng)目是通過 ?SQL select statement ( select? 語句)返回的。
? ?Text([Style], MaxCharacters, [WordsPerLine, LinesPerParagraph])? 這個(gè)函數(shù)返回文本。可選擇的 ?Style (字體)參數(shù)可以是 LorumIpsum (默認(rèn))(懷疑是荷蘭語。 —— 譯者姜華東注)、英語、德語或日語。它還可以是象 ?[aA]? 這樣的字符集,在這種情況下,詞匯從指定的字符集中產(chǎn)生。 ?MaxCharacters? 決定了生成的文本的最大大小, WordsPerLine? 和 ?LinesPerParagraph? 決定了行和段落的大小。指定的大小可以是指定的數(shù)字或范圍(最小 .. 最大)。
? ?File(path, path, ...)? 從特定的路徑( path )中隨機(jī)地選擇一個(gè)文件,并插入內(nèi)容。允許輸入二進(jìn)制數(shù)據(jù)(象圖片這樣的)到數(shù)據(jù)庫中。路徑可以使用通配符,象 ?d:\images\*.bmp? 這樣的。
可以通過使用下列函數(shù)更改前面函數(shù)的文本結(jié)果:
?????????? ? Uppercase()
?????????? ? LowerCase()
?????????? ? InitCaps()
例如: InitCaps( List(select ename from emp) )
還有幾個(gè)預(yù)先定義的數(shù)據(jù)集可用于生成或多或少的真實(shí)數(shù)據(jù)。可以使用下列定義:
?????????? ? Firstname? – 一般列表中的名
?????????? ? Lastname? – 一般列表中的姓
?????????? ? Company? – 公司名(現(xiàn)有公司的隨機(jī)列表)
?????????? ? Address1? – 地址行 ?1
?????????? ? Address2? – 地址行 ?2
?????????? ? ZIP? – 郵政編碼
?????????? ? City? – 城市
?????????? ? State? – 省
?????????? ? Country? – 國家
?????????? ? Email? (被關(guān)聯(lián)到 ?Firstname? , Lastname? 和 ?Country )
還有一些可用的實(shí)例自定義數(shù)據(jù)集:
?????????? ? Components.Code? – 一般商品項(xiàng)目:商品代碼
?????????? ? Components.Description? – 商品描述(計(jì)算機(jī)部分)
?????????? ? Components.Price? – 商品價(jià)格
?????????? ? Elements.Name? – 化學(xué)元素(名稱)
?????????? ? Elements.Symbol? – 化學(xué)元素(符號(hào))
這些數(shù)據(jù)集可以在 ?DataGenerator\UserData? 目錄中被找到,文件名為 elements.txt? 和 ?components.txt? 。如果需要,可以添加自己的集。添加一個(gè)逗號(hào)分隔的文件很簡單,在文件中第一行兩個(gè)方括號(hào)之間保存著描述。可以通過指定 “ 文件名 . 描述 ” 來使用的文件中的數(shù)據(jù),就象兩個(gè)例子那樣。
上面提及的所有函數(shù)和數(shù)據(jù)都可以添加到一起,例如: Random(10..99) + '-' + [A(4)]? 。? “ + ” 是可選的,但那中至少應(yīng)該有一個(gè)空格作為分隔符。
?
選項(xiàng)
選項(xiàng)標(biāo)簽頁允許設(shè)置一些首選項(xiàng),特別是數(shù)據(jù)生成器的定義。可以指定一個(gè)日期的格式(與被 ?Random? 函數(shù)使用的例子一樣)。還可以指定在多少條記錄之后需要提交(設(shè)為 ?0? 是一完成就提交)。延遲首選項(xiàng)僅僅用于一些實(shí)時(shí)測試,這中需要數(shù)據(jù)以指定的速度被插入。
?
自定義部分允許定義或越過被用于 ?[ 數(shù)據(jù) ]? 定義的字符集。項(xiàng)目總是單個(gè)字符,值是一個(gè)或多個(gè)空格分隔的字符范圍,就象這樣: A..Z a..z 0..9 #200..#220? 。例如,要定義一個(gè)十六進(jìn)制的字符集,可以指定 ?H? 為項(xiàng)目, 0..9 A..F? 為值。
“ 初始化腳本 ” 部分允許指定在數(shù)據(jù)被插入到數(shù)據(jù)庫中前應(yīng)該被執(zhí)行的 ?SQL? 語句。在典型的情況下,這將是創(chuàng)建表或截短表、選擇回滾段等的語句。多個(gè)語句需要用分號(hào)來分隔。
通過按左邊首選項(xiàng)按鈕,在默認(rèn)的情況下,對于所有數(shù)據(jù)生成器的一般選項(xiàng)可以被定義。如果數(shù)據(jù)生成器定義中相應(yīng)的首選項(xiàng)也被設(shè)置了,這些首選項(xiàng)將被否決。
?
生成數(shù)據(jù)
在左下方有三個(gè)按鈕可用于生成實(shí)際的數(shù)據(jù):
?????????? ?開始測試運(yùn)行? – 這將在結(jié)果標(biāo)簽頁上的表格中生成數(shù)據(jù)和顯示結(jié)果。通過右鍵單擊表格,可以以不同的格式導(dǎo)出這些結(jié)果。
?????????? ?創(chuàng)建數(shù)據(jù)為 ?SQL? – 生成數(shù)據(jù)為 ?SQL? 腳本。這僅僅工作于不用文件功能添加來自文件的數(shù)據(jù)的情況下。
?在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)? – 生成數(shù)據(jù)到 ?Oracle? 數(shù)據(jù)庫中。
?
一些例子:
Sequence(1, 1)
Text(20, 20, 1)
Text(30, 30, 1)
Text(300, 10, 1)
Signal(2000,2013,13,0) '/' Signal(1,12,12,0) '/' Signal(1,28,28,0) ' ' Signal(00,23,23,0)?':'?Signal(00,59,59,0)?':'?Signal(00,59,59,0)
Text(2000, 8..12, 3..8)
Random(0, 10000)
SQL(systimestamp)
Random(1, 148)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
