1. 程式人生 > >Oracle生成大量測試資料的方法

Oracle生成大量測試資料的方法

Oracle生成一百萬測試資料的方法如下:

方法一:建立一個表,並同時新增1000000條資料,程式碼:

  1. create table TestTable as   
  2. select rownum as id,  
  3.                to_char(sysdate + rownum/24/3600, 'yyyy-mm-dd hh24:mi:ss') as inc_datetime,  
  4.                trunc(dbms_random.value(0, 100)) as random_id,  
  5.                dbms_random.string('x', 20) random_string  
  6.           from dual  --寫死的
  7.         connect by level <= 1000000;  

方法二:在建立表後,原來表的基礎上追加記錄,比如在方法一建立的TestTable表中追加1000000條資料,程式碼:

  1. insert into TestTable  
  2.   (ID, INC_DATETIME,RANDOM_ID,RANDOM_STRING)  
  3.   select rownum as id,  
  4.          to_char(sysdate + rownum, 'yyyy-mm-dd hh24:mi:ss') as inc_datetime,  --天數依次遞增
  5.          trunc(dbms_random.value(0, 100)) as random_id,  
  6.          dbms_random.string('x', 20) random_string  
  7.     from dual  
  8.   connect by level <= 1000000;  

上面SQL是利用了Oracle資料庫語法的幾個實用小技巧實現的: 1、利用Oracle特有的“connect by”樹形連線語法生成測試記錄,“level <= 10”表示要生成10記錄; 2、利用rownum虛擬列生成遞增的整數資料; 3、利用sysdate函式加一些簡單運算來生成日期資料,本例中是每條記錄的時間加1秒; 4、利用dbms_random.value函式生成隨機的數值型資料,本例中是生成0到100之間的隨機整數; 5、利用dbms_random.string函式生成隨機的字元型資料,本例中是生成長度為20的隨機字串,字串中可以包括字元或數字。

6、to_char(sysdate + rownum, 'yyyy-mm-dd hh24:mi:ss') 這裡是轉換為字串,如果該欄位的型別為TimeStamp時間戳,那這裡可以改寫一下方法,轉換為時間戳 to_timestamp(sysdate + rownum, 'yyyy-mm-dd hh24:mi:ss')