首先測試環境建立:dept表
CREATETABLE dept
( deptno NUMBER(6),
dname VARCHAR2(20),
loc VARCHAR2(20));
以下實驗就是像dept表中插入大量的數據。
數據生成器允許創建演示和測試數據。對于測試應用程序和查看它們怎樣執行大量的數據,這很有幫助的。可以在PL/SQL Developer的工具菜單的下面找到數據生成器:Data Generator。
基本上,定義由一個或多個表、要生成的記錄數量和字段數據定義構成。左上部的按鈕允許打開和保存定義。
在上面,可以看到提供的 dept演示,這個演示是為 dept表創建數據。在這一頁中,發現有下列項目:
•表 –表的名稱。
•記錄數 –要生成的記錄數。這可以是數字,也可以是象 10..100 這樣的范圍。
•名稱 –字段名稱。
•類型 –字段的數據類型。
•大小 –字段大小(在適當時)。對于數字字段,這將是數值范圍、精度。
•數據 –字段數據的定義(見下面)。
•主列 –如果這個表是另一個表的明細,可以設置主列。對于每個已產生的記錄,指定數量的明細記錄將被生成。
我們可以使用“添加現有表”按鈕來添加一個現有的表,還可以從對象瀏覽器中拖放一個表。
數據定義
數據定義決定了被生成的數據。如果要創建簡單的字符,可以在兩個方括號之間輸入字符定義:[數據]
數據可以是下列預先確定的集的混合體:
• 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 是一完成就提交)。延遲首選項僅僅用于一些實時測試,這中需要數據以指定的速度被插入。
自定義部分允許定義或越過被用于 [數據] 定義的字符集。項目總是單個字符,值是一個或多個空格分隔的字符范圍,就象這樣:A..Z a..z 0..9 #200..#220 。例如,要定義一個十六進制的字符集,可以指定 H 為項目,0..9 A..F 為值。
“初始化腳本”部分允許指定在數據被插入到數據庫中前應該被執行的 SQL 語句。在典型的情況下,這將是創建表或截短表、選擇回滾段等的語句。多個語句需要用分號來分隔。
通過按左邊首選項按鈕,在默認的情況下,對于所有數據生成器的一般選項可以被定義。如果數據生成器定義中相應的首選項也被設置了,這些首選項將被否決。
生成數據
在左下方有三個按鈕可用于生成實際的數據:
•開始測試運行 –這將在結果標簽頁上的表格中生成數據和顯示結果。通過右鍵單擊表格,可以以不同的格式導出這些結果。
•創建數據為 SQL –生成數據為 SQL 腳本。這僅僅工作于不用文件功能添加來自文件的數據的情況下。
•在數據庫中創建數據 –生成數據到 Oracle 數據庫中。