首先測試環境建立: dept 表
CREATE TABLE 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 數據庫中。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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