plsql中數據生成工具data generator的使用


使用數據庫時,有時需要使用大量的數據,可以用PLSQL Developer提供的Data Generator工具,

這里記錄一下工具的介紹及幾個使用注意事項

1、工具介紹

功能入口位於 工具 菜單下,漢化版名字為 數據生成器,英文版稱為 Data Generator。

這個工具可以很方便的生成大量數據。

界面布局很簡潔,看到界面就差不多知道后續要怎么做了。鼠標懸停在按鈕上方時,會有對功能的簡單描述,還是很方便的。

如果對界面不熟悉,可以看看其他文章,網上還挺多的。

2、數據定義(Data Definition)基本字符集合

選中需要處理的表格后,會自動加載表的字段信息(Name,Type,Size), 位於后方的 Data 列用於定義生成的數據。

先說一下預定義的字符集(characters):

標識符 代表字符集合
a abcdefghijklmnopqrstuvwxyz
A ABCDEFGHIJKLMNOPQRSTUVWXYZ
@ A..Z a..z(省略中間的)
# A..Z a..z 0..9
0 0..9(和9一樣)
9 0..9(和0一樣)
1 1..9
* 所有的ASCII字符

舉例來說:

[Aaa00] 會生成類似 Gxe21,Liy05這樣的字符串

[AA '-' 1000] 會生成 CX-4903SY-1044這樣的數據,定義中 單引號 包裹的內容會直接輸出,定義中 沒有在單引號內的空格 會被忽略。

[Aa(5..15)' 'Aa(8..20)] 會生成 Masfae Qwwecdsadif 樣子的數據,定義中小括號內的數據定義了隨機生成的字符數量的界限。

3、數據定義時可用的函數

下面這段引用了(轉)PL/SQL Developer Data Generator的使用 - 失樂園 - BlogJava 的內容:

  • 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可以是是象 [aA] 這樣的字符集,在這種情況下,詞匯從指定的字符集中產生。
    MaxCharacters 決定了生成的文本的最大大小,

    WordsPerLine 和 LinesPerParagraph 決定了行和段落的大小。

    指定的大小可以是指定的數字或范圍(最小..最大)。

  • File(path, path, ...) 從特定的路徑(path)中隨機地選擇一個文件,並插入內容。

    允許輸入二進制數據(象圖片這樣的)到數據庫中。路徑可以使用通配符,象 d:"images"*.bmp 這樣的。

可以通過使用下列函數更改前面函數的文本結果:

​ •Uppercase()

​ •LowerCase()

​ •InitCaps()

例如:InitCaps( List(select ename from emp) )

3、使用注意事項

  • 未經測試,直接生成大量數據至數據庫引發的無限彈窗報錯

    生成數據至數據庫時,並不會遇到報錯就停止,而是會繼續向下執行,如果配置數據時存在錯誤,plsql會為每一個錯誤彈出一個窗口,如果一開始就生成了幾萬條數據,就會有幾萬個窗口等着你點擊,這種時候只能關掉plsql的進程重新開始。

    最佳的操作應該是在定義數據后,修改生成數據的數量,比如10,然后生成對應的sql,單獨執行確認配置無誤后再執行大數據量的插入。

  • 生成的VARCHAR類型的數據,沒有被單引號包裹

    varchar2,nvarchar2等類型的字段插入數據時需要由單引號包裹,該工具生成的數據不包含單引號,插入時會出現 標識符過長,標識符無效等問題。

    可以借用 List 函數解決該問題。如定義:List(select '''' from dual) + [A(4)] + List(select '''' from dual)可以生成類似 'HYSF' 的數據,因為在 oracle中,單引號( ' ) 還會被視為轉義符,即 ’‘ 代表 ’

  • 切換到其他需要生成數據的表時,可以保留上一張表對數據的定義


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM