首页 > 数据库 > Oracle > sqlldr一行记录拆分为多行
需求:
将以下文件中每行数据,按列拆分为多行。如将文件a.txt插入表中,
文件a.txt内容:
a 1 2 3
b 11 12 13
c 21 22 23
插入后的效果:
a col1 1
b col1 11
c col1 21
a col2 2
b col2 12
c col2 22
a col3 3
b col3 13
c col3 23
--目标表
SQL> desc tmp_mh
Name Null? Type
----------------------------------------- -------- ----------------------------
X VARCHAR2(10)
KEY VARCHAR2(10)
VALUE NUMBER(38)
--控制文件:tmp.ctl
--只有使用position,才会从行首读取数据
LOAD DATA
INTO TABLE tmp_mh
( x POSITION(1:1),
key constant "col1",
value TERMINATED BY WHITESPACE,
x3 filler TERMINATED BY WHITESPACE,
x4 filler TERMINATED BY WHITESPACE
)
INTO TABLE tmp_mh
( x POSITION(1:1),
key constant "col2",
x2 filler TERMINATED BY WHITESPACE,
value TERMINATED BY WHITESPACE,
x4 filler TERMINATED BY WHITESPACE
)
INTO TABLE tmp_mh
( x POSITION(1:1),
key constant "col3",
x2 filler TERMINATED BY WHITESPACE,
x3 filler TERMINATED BY WHITESPACE,
value TERMINATED BY WHITESPACE
)
sqlldr userid/userid control=tmp.ctl data=a.txt log=a.log
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/18922393/viewspace-1318526/,如需转载,请注明出处,否则将追究法律责任。