1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
-- 插入商品 (10萬筆)
INSERT /*+ APPEND */ INTO PRODUCTS
SELECT
LEVEL,
'Product_' || LEVEL,
CASE MOD(LEVEL, 5) WHEN 0 THEN 'Electronics' WHEN 1 THEN 'Books' WHEN 2 THEN 'Clothing' WHEN 3 THEN 'Home' ELSE 'Food' END,
DBMS_RANDOM.VALUE(10, 5000),
'Y'
FROM DUAL CONNECT BY LEVEL <= 100000;
-- 插入客戶 (10萬筆)
INSERT /*+ APPEND */ INTO CUSTOMERS
SELECT
LEVEL,
'User_' || LEVEL,
CASE MOD(LEVEL, 4) WHEN 0 THEN 'Taipei' WHEN 1 THEN 'Taichung' WHEN 2 THEN 'Kaohsiung' ELSE 'Tainan' END,
MOD(LEVEL, 5) + 1,
'Customer preference notes for ID ' || LEVEL
FROM DUAL CONNECT BY LEVEL <= 100000;
-- 插入訂單主檔 (10萬筆)
INSERT /*+ APPEND */ INTO ORDERS
SELECT
LEVEL,
TRUNC(DBMS_RANDOM.VALUE(1, 100000)),
TO_DATE('2023-01-01','YYYY-MM-DD') + DBMS_RANDOM.VALUE(0, 365),
0, -- 後續更新
CASE MOD(LEVEL, 3) WHEN 0 THEN 'Credit Card' WHEN 1 THEN 'Transfer' ELSE 'Cash' END
FROM DUAL CONNECT BY LEVEL <= 100000;
-- 插入訂單明細 (10萬筆,讓每筆訂單至少對應一個商品)
INSERT /*+ APPEND */ INTO ORDER_ITEMS
SELECT
LEVEL,
LEVEL, -- 這裡簡化為 1:1,你可以自行調整為 1:N
TRUNC(DBMS_RANDOM.VALUE(1, 100000)),
TRUNC(DBMS_RANDOM.VALUE(1, 10)),
0
FROM DUAL CONNECT BY LEVEL <= 100000;
-- 插入物流明細 (10萬筆)
INSERT /*+ APPEND */ INTO LOGISTICS_DETAIL
SELECT
LEVEL,
LEVEL,
'TRK' || LPAD(LEVEL, 10, '0'),
SYSTIMESTAMP - DBMS_RANDOM.VALUE(0, 10),
'Arrived at station ' || MOD(LEVEL, 50),
RPAD('Detailed log for shipment ' || LEVEL, 1000, '*')
FROM DUAL CONNECT BY LEVEL <= 100000;
COMMIT;
-- 收集統計資訊 (Oracle 調校必備)
EXEC DBMS_STATS.GATHER_SCHEMA_STATS(USER);
|