CREATE TABLE TABLETEMP(
a number(5),
a number(5),
b number(3)
);
若有一些数据文件需要导入这个表:
1 1001 2,8,11,106
23 105 3,8,9
(每列通过Tab按键区分)
希望能够得到如下数据结构
a b c
------------------------
1 1001 2
1 1001 8
1 1001 11
1 1001 106
23 105 3
23 105 8
23 105 9
请问高手该如何写CTL文件啊?
a number(5),
a number(5),
b number(3)
);
若有一些数据文件需要导入这个表:
1 1001 2,8,11,106
23 105 3,8,9
(每列通过Tab按键区分)
希望能够得到如下数据结构
a b c
------------------------
1 1001 2
1 1001 8
1 1001 11
1 1001 106
23 105 3
23 105 8
23 105 9
请问高手该如何写CTL文件啊?
A1 A2 A3 A4 A5 A6
1 1001 2, 8, 11,106
23 105 3, 8, 9
SELECT A1,A2,A3 FROM TABLE_A WHERE A3 IS NOT NULL
UNION
SELECT A1,A2,A4 FROM TABLE_A WHERE A4 IS NOT NULL
UNION
SELECT A1,A2,A5 FROM TABLE_A WHERE A5 IS NOT NULL
;把这个结果集插入数据库就可以了。
A1 A2 A3
1 1001 2, 8, 11,106
23 105 3, 8, 9
然手根据行转列就可以了
例子:
create table t_test (A1 varchar2(200),A2 varchar2(200),A3 varchar2(200));insert into t_test values ('1','1001','2,8,11,106');
insert into t_test values ('23','105','3,8,9');
SELECT A1,A2
,REGEXP_SUBSTR(A3,'[^,]+',1,l) AS NAME
FROM t_test
,(SELECT LEVEL l FROM DUAL CONNECT BY LEVEL<=100)
WHERE l <=LENGTH(A3) - LENGTH(REPLACE(A3,','))+1
ORDER BY 1,2,3;把这个结果集插入数据库就可以了。