Oracle大數(shù)據(jù)量數(shù)據(jù)生成器Data Generator的使用
首先測(cè)試環(huán)境建立:dept表
CREATETABLE dept
( deptno NUMBER(6),
dname VARCHAR2(20),
loc VARCHAR2(20));
以下實(shí)驗(yàn)就是像dept表中插入大量的數(shù)據(jù)。
數(shù)據(jù)生成器允許創(chuàng)建演示和測(cè)試數(shù)據(jù)。對(duì)于測(cè)試應(yīng)用程序和查看它們?cè)鯓訄?zhí)行大量的數(shù)據(jù),這很有幫助的。可以在PL/SQL Developer的工具菜單的下面找到數(shù)據(jù)生成器:Data Generator。
基本上,定義由一個(gè)或多個(gè)表、要生成的記錄數(shù)量和字段數(shù)據(jù)定義構(gòu)成。左上部的按鈕允許打開(kāi)和保存定義。
在上面,可以看到提供的 dept演示,這個(gè)演示是為 dept表創(chuàng)建數(shù)據(jù)。在這一頁(yè)中,發(fā)現(xiàn)有下列項(xiàng)目:
•表 –表的名稱(chēng)。
•記錄數(shù) –要生成的記錄數(shù)。這可以是數(shù)字,也可以是象 10..100 這樣的范圍。
•名稱(chēng) –字段名稱(chēng)。
•類(lèi)型 –字段的數(shù)據(jù)類(lèi)型。
•大小 –字段大小(在適當(dāng)時(shí))。對(duì)于數(shù)字字段,這將是數(shù)值范圍、精度。
•數(shù)據(jù) –字段數(shù)據(jù)的定義(見(jiàn)下面)。
•主列 –如果這個(gè)表是另一個(gè)表的明細(xì),可以設(shè)置主列。對(duì)于每個(gè)已產(chǎn)生的記錄,指定數(shù)量的明細(xì)記錄將被生成。
我們可以使用“添加現(xiàn)有表”按鈕來(lái)添加一個(gè)現(xiàn)有的表,還可以從對(duì)象瀏覽器中拖放一個(gè)表。
數(shù)據(jù)定義
數(shù)據(jù)定義決定了被生成的數(shù)據(jù)。如果要?jiǎng)?chuàng)建簡(jiǎn)單的字符,可以在兩個(gè)方括號(hào)之間輸入字符定義:[數(shù)據(jù)]
數(shù)據(jù)可以是下列預(yù)先確定的集的混合體:
• a: a..z (小寫(xiě)字符)
• A: A..Z (大寫(xiě)字符)
• @: 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 等。
在定義中空格字符是被忽略的,除非它們?cè)谝?hào)中。
如果要一個(gè)字符重復(fù)許多次,可以在字符的后面兩個(gè)括號(hào)之間添加次數(shù)(n)。還可以添加一個(gè)隨機(jī)數(shù)(最小..最大)。
例如:
[Aa(5..15) ' ' Aa(8..20)] 的結(jié)果就象這樣:"Masfae Qwwecdsadif"
定義中的文字文本不必被裝入到括號(hào)中。換句話說(shuō),['hello'] 和 'hello' 是等效的。不帶引號(hào)被輸入的文本被認(rèn)為是函數(shù)。
有幾個(gè)特定的函數(shù)是可用的:
•Signal(Min, Max, Delta, Noise) 返回技術(shù)測(cè)定數(shù)據(jù)(象溫度這樣的)。Min(最小)和 Max(最大)決定了范圍, Delta(△)為最大更改量,還可以添加一些 Noise(噪聲)。例如:Signal(-10, 20, 0.1, 0.1)。
•Random([Min], Max) 返回Min(最小)和 Max(最大)之間的隨機(jī)數(shù)。如果只指定了 Max ,那么 Min 就被設(shè)為 0 。對(duì)于日期字段,可以輸入Min(最小)和 Max(最大)的日期。
•Sequence(Start, [Inc], [WithinParent]) 返回序號(hào)。Start 為開(kāi)始值,Inc 為增量(默認(rèn)為 1)。對(duì)于明細(xì)表,可以再指定 WithinParent 關(guān)鍵詞來(lái)指出序列應(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)目是通過(guò) SQL select statement(select 語(yǔ)句)返回的。
• Text([Style], MaxCharacters, [WordsPerLine, LinesPerParagraph]) 這個(gè)函數(shù)返回文本。可選擇的 Style(字體)參數(shù)可以是 LorumIpsum(默認(rèn))(懷疑是荷蘭語(yǔ)。——譯者姜華東注)、英語(yǔ)、德語(yǔ)或日語(yǔ)。它還可以是象 [aA] 這樣的字符集,在這種情況下,詞匯從指定的字符集中產(chǎn)生。 MaxCharacters 決定了生成的文本的最大大小,WordsPerLine 和 LinesPerParagraph 決定了行和段落的大小。指定的大小可以是指定的數(shù)字或范圍(最小..最大)。
• File(path, path, ...) 從特定的路徑(path)中隨機(jī)地選擇一個(gè)文件,并插入內(nèi)容。允許輸入二進(jìn)制數(shù)據(jù)(象圖片這樣的)到數(shù)據(jù)庫(kù)中。路徑可以使用通配符,象 d:\images\*.bmp 這樣的。
可以通過(guò)使用下列函數(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 –國(guó)家
•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é)元素(名稱(chēng))
•Elements.Symbol –化學(xué)元素(符號(hào))
這些數(shù)據(jù)集可以在 DataGenerator\UserData 目錄中被找到,文件名為elements.txt 和 components.txt 。如果需要,可以添加自己的集。添加一個(gè)逗號(hào)分隔的文件很簡(jiǎn)單,在文件中第一行兩個(gè)方括號(hào)之間保存著描述。可以通過(guò)指定“文件名.描述”來(lái)使用的文件中的數(shù)據(jù),就象兩個(gè)例子那樣。
上面提及的所有函數(shù)和數(shù)據(jù)都可以添加到一起,例如:Random(10..99) + '-' + [A(4)] 。 “+”是可選的,但那中至少應(yīng)該有一個(gè)空格作為分隔符。
選項(xiàng)
選項(xiàng)標(biāo)簽頁(yè)允許設(shè)置一些首選項(xiàng),特別是數(shù)據(jù)生成器的定義。可以指定一個(gè)日期的格式(與被 Random 函數(shù)使用的例子一樣)。還可以指定在多少條記錄之后需要提交(設(shè)為 0 是一完成就提交)。延遲首選項(xiàng)僅僅用于一些實(shí)時(shí)測(cè)試,這中需要數(shù)據(jù)以指定的速度被插入。
自定義部分允許定義或越過(guò)被用于 [數(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ù)庫(kù)中前應(yīng)該被執(zhí)行的 SQL 語(yǔ)句。在典型的情況下,這將是創(chuàng)建表或截短表、選擇回滾段等的語(yǔ)句。多個(gè)語(yǔ)句需要用分號(hào)來(lái)分隔。
通過(guò)按左邊首選項(xiàng)按鈕,在默認(rèn)的情況下,對(duì)于所有數(shù)據(jù)生成器的一般選項(xiàng)可以被定義。如果數(shù)據(jù)生成器定義中相應(yīng)的首選項(xiàng)也被設(shè)置了,這些首選項(xiàng)將被否決。
生成數(shù)據(jù)
在左下方有三個(gè)按鈕可用于生成實(shí)際的數(shù)據(jù):
•開(kāi)始測(cè)試運(yùn)行 –這將在結(jié)果標(biāo)簽頁(yè)上的表格中生成數(shù)據(jù)和顯示結(jié)果。通過(guò)右鍵單擊表格,可以以不同的格式導(dǎo)出這些結(jié)果。
•創(chuàng)建數(shù)據(jù)為 SQL –生成數(shù)據(jù)為 SQL 腳本。這僅僅工作于不用文件功能添加來(lái)自文件的數(shù)據(jù)的情況下。
•在數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù) –生成數(shù)據(jù)到 Oracle 數(shù)據(jù)庫(kù)中。
===================================================================================================================
注:該文并非完全原創(chuàng),主要來(lái)源
http://www.cnblogs.com/Automation_software/archive/2011/01/27/1946366.html
Tools/Data Generator/
界面
數(shù)據(jù)定義
數(shù)據(jù)定義決定了被生成的數(shù)據(jù)。如果要?jiǎng)?chuàng)建簡(jiǎn)單的字符,可以在兩個(gè)方括號(hào)之間輸入字符定義:[數(shù)據(jù)]
數(shù)據(jù)可以是下列預(yù)先確定的集的混合體:
• a: a..z (小寫(xiě)字符)
• A: A..Z (大寫(xiě)字符)
• @: 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 等。
在定義中空格字符是被忽略的,除非它們?cè)谝?hào)中。
如果要一個(gè)字符重復(fù)許多次,可以在字符的后面兩個(gè)括號(hào)之間添加次數(shù)(n)。還可以添加一個(gè)隨機(jī)數(shù)(最小..最大)。
例如:
[Aa(5..15) ' ' Aa(8..20)] 的結(jié)果就象這樣:"Masfae Qwwecdsadif"
定義中的文字文本不必被裝入到括號(hào)中。換句話說(shuō),['hello'] 和 'hello' 是等效的。不帶引號(hào)被輸入的文本被認(rèn)為是函數(shù)。
有幾個(gè)特定的函數(shù)是可用的:
•Signal(Min, Max, Delta, Noise) 返回技術(shù)測(cè)定數(shù)據(jù)(象溫度這樣的)。Min(最小)和 Max(最大)決定了范圍, Delta(△)為最大更改量,還可以添加一些 Noise(噪聲)。例如:Signal(-10, 20, 0.1, 0.1)。
•Random([Min], Max) 返回Min(最小)和 Max(最大)之間的隨機(jī)數(shù)。如果只指定了 Max ,那么 Min 就被設(shè)為 0 。對(duì)于日期字段,可以輸入Min(最小)和 Max(最大)的日期。
•Sequence(Start, [Inc], [WithinParent]) 返回序號(hào)。Start 為開(kāi)始值,Inc 為增量(默認(rèn)為 1)。對(duì)于明細(xì)表,可以再指定WithinParent 關(guān)鍵詞來(lái)指出序列應(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)目是通過(guò) SQL select statement(select 語(yǔ)句)返回的。
• Text([Style], MaxCharacters, [WordsPerLine, LinesPerParagraph]) 這個(gè)函數(shù)返回文本。可選擇的 Style(字體)參數(shù)可以是LorumIpsum(默認(rèn))(懷疑是荷蘭語(yǔ)。——譯者姜華東注)、英語(yǔ)、德語(yǔ)或日語(yǔ)。它還可以是象 [aA] 這樣的字符集,在這種情況下,詞匯從指定的字符集中產(chǎn)生。 MaxCharacters 決定了生成的文本的最大大小,WordsPerLine 和 LinesPerParagraph 決定了行和段落的大小。指定的大小可以是指定的數(shù)字或范圍(最小..最大)。
• File(path, path, ...) 從特定的路徑(path)中隨機(jī)地選擇一個(gè)文件,并插入內(nèi)容。允許輸入二進(jìn)制數(shù)據(jù)(象圖片這樣的)到數(shù)據(jù)庫(kù)中。路徑可以使用通配符像 d:\images\*.bmp 這樣的。
可以通過(guò)使用下列函數(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 –國(guó)家
•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é)元素(名稱(chēng))
•Elements.Symbol –化學(xué)元素(符號(hào))
這些數(shù)據(jù)集可以在 DataGenerator\UserData 目錄中被找到,文件名為elements.txt 和 components.txt 。如果需要,可以添加自己的集。添加一個(gè)逗號(hào)分隔的文件很簡(jiǎn)單,在文件中第一行兩個(gè)方括號(hào)之間保存著描述。可以通過(guò)指定“文件名.描述”來(lái)使用的文件中的數(shù)據(jù),就象兩個(gè)例子那樣。
上面提及的所有函數(shù)和數(shù)據(jù)都可以添加到一起,例如:Random(10..99) + '-' + [A(4)] 。 “+”是可選的,但那中至少應(yīng)該有一個(gè)空格作為分隔符。
自定義部分允許定義或越過(guò)被用于 [數(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ù)庫(kù)中前應(yīng)該被執(zhí)行的 SQL 語(yǔ)句。在典型的情況下,這將是創(chuàng)建表或截短表、選擇回滾段等的語(yǔ)句。多個(gè)語(yǔ)句需要用分號(hào)來(lái)分隔。
通過(guò)按左邊首選項(xiàng)按鈕,在默認(rèn)的情況下,對(duì)于所有數(shù)據(jù)生成器的一般選項(xiàng)可以被定義。如果數(shù)據(jù)生成器定義中相應(yīng)的首選項(xiàng)也被設(shè)置了,這些首選項(xiàng)將被否決。
生成數(shù)據(jù)
在左下方有三個(gè)按鈕可用于生成實(shí)際的數(shù)據(jù):
•開(kāi)始測(cè)試運(yùn)行 –這將在結(jié)果標(biāo)簽頁(yè)上的表格中生成數(shù)據(jù)和顯示結(jié)果。通過(guò)右鍵單擊表格,可以以不同的格式導(dǎo)出這些結(jié)果。
•創(chuàng)建數(shù)據(jù)為 SQL –生成數(shù)據(jù)為 SQL 腳本。這僅僅工作于不用文件功能添加來(lái)自文件的數(shù)據(jù)的情況下。
•在數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù) –生成數(shù)據(jù)到 Oracle 數(shù)據(jù)庫(kù)中。
選項(xiàng)
選項(xiàng)標(biāo)簽頁(yè)允許設(shè)置一些首選項(xiàng),特別是數(shù)據(jù)生成器的定義。可以指定一個(gè)日期的格式(與被 Random 函數(shù)使用的例子一樣)。還可以指定在多少條記錄之后需要提交(設(shè)為 0 是一完成就提交)。延遲首選項(xiàng)僅僅用于一些實(shí)時(shí)測(cè)試,這中需要數(shù)據(jù)以指定的速度被插入。有時(shí)候反復(fù)的設(shè)置還是挺麻煩的保存一下
重點(diǎn):生成date類(lèi)型
Date類(lèi)型是這里的特例難以生成,如果生成固定格式可以拼接起來(lái)。如:Sequence(2011,0,1)'-'Sequence(03,0,1)'-'Sequence(01,0,1),插入指定的日期。Data Generator插入的日期格式會(huì)自動(dòng)轉(zhuǎn)換成默認(rèn)dd-mm-yyyy格式。
可以事先設(shè)置時(shí)間生成格式
近似隨機(jī)日期生成:
Signal(1990, 2013,23, 0) '/' Signal(1, 12,12, 0) '/' Signal(1, 31,31, 0) ' 'Signal(00, 23,23, 0) ':' Signal(00, 59,59, 0) ':' Signal(00, 59,59, 0)勉強(qiáng)可以模擬隨機(jī)形成” yyyy-mm-dd HH:MI:SS”類(lèi)型的的字符串(還有缺陷就是每個(gè)月都有31號(hào),比如會(huì)形成1998/2/31,這樣生成的sql語(yǔ)句有可能不會(huì)自動(dòng)轉(zhuǎn)換為時(shí)間類(lèi)型)
Random(Min, Max)方法無(wú)法拼接,每個(gè)返回值會(huì)先強(qiáng)制轉(zhuǎn)換成date類(lèi)型再拼接。