做資料庫開發或管理的人經常要建立大量的測試資料,動不動就需要上萬條,如果一條一條的錄入,那會浪費大量的時間,本文介紹了oracle中如何通過一條sql快速生成大量的測試資料的方法。
產生測試資料的sql如下:
sql> select rownum as id,
2 to_char(sysdate + rownum / 24 / 3600, 『yyyy-mm-dd hh24:mi:ss』) as inc_datetime,
3 trunc(dbms_random.value(0, 100)) as random_id,
4 dbms_random.string(『x』, 20) random_string
5 from dual
6 connect by level <= 10;
id inc_datetime random_id random_string
1 2009-12-08 19:43:14 76 gwmu280mivbkkoczv620
2 2009-12-08 19:43:15 34 gnv88o6tdhd3twc5gwi5
3 2009-12-08 19:43:16 77 li6h4o5iahqimo4b0wmh
4 2009-12-08 19:43:17 99 lp7xp49i0yojiysjdqzo
5 2009-12-08 19:43:18 55 v3284x9rxw4uzi8bqmo3
6 2009-12-08 19:43:19 16 t0oa52uaoghl1tt46h25
7 2009-12-08 19:43:20 61 uy6ruof7hwto86942flp
8 2009-12-08 19:43:21 25 jyxo4opew8j1ckvcpdjr
9 2009-12-08 19:43:22 10 donu6w9qvqm3kj2ug8lo
10 2009-12-08 19:43:23 76 j8djlvnouizdxe4uxujg
10 rows selected
上面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的隨機字串,字串中可以包括字元或數字。
ok,那要生成10萬條測試記錄表可以用如下sql:
create table mytesttable as
select rownum as id,
to_char(sysdate + rownum/24/3600, 『yyyy-mm-dd hh24:mi:ss』) as inc_datetime,
trunc(dbms_random.value(0, 100)) as random_id,
dbms_random.string(『x』, 20) random_string
from dual
connect by level <= 100000;
Oracle資料庫sql語句
1.建立使用者 賦許可權 刪除使用者 drop tablespace test tbs including contents cascade constraints 刪除表空間 create tablespace test tbs datafile test pdb.dbf size 1024m a...
oracle資料庫sql語句01
查詢所有使用者 select username,account status from dba users 查詢表資訊 sql desc scott.emp 名稱 是否為空?型別 empno not null number 4 ename varchar2 10 job varchar2 9 mgr...
oracle常用資料庫sql語句
建立表空間 create bigfile tablespace 表空間名稱 datafile 表空間路徑 size 100m autoextend on extent management local autoallocate 建立使用者 create user 使用者名稱 identified b...