ITPub博客

首页 > 数据库 > Oracle > sqlldr一行记录拆分为多行

sqlldr一行记录拆分为多行

原创 Oracle 作者:redhouser 时间:2014-11-03 11:28:43 0 删除 编辑

需求:
将以下文件中每行数据,按列拆分为多行。如将文件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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-05-26

  • 博文量
    211
  • 访问量
    812141