有关sqlldr命令的问题,不知道ctl文件该如果写,请高手帮忙.

qtj 2006-08-02 11:23:35
我想往一个表中导数据,基本情况如下.

data.txt文件里有一条数据,如下(中间用','号相隔):
1111,2233,4444,5555,6666

表的结构如下:
tablename(f1 varchar2,f2 varchar2,f3 varchar2,f4 varchar2,f5 varchar2,f6 varchar2)

要求导入数据库后表中的值如下:
f1 1111
f2 2233
f3 4444
f4 2233
f5 5555
f6 6666

我现在的难点在于字段f2和f4都要取第二个数据2233,
在此先谢谢了(最好不用position,因为数据的长度是不定的).
...全文
251 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qtj 2006-08-02
  • 打赏
  • 举报
回复
to:zcs_1(生生不息)

不好意思,我没有看仔细,你的方法也是可行的,只是方法稍为复杂一点.

zmgowin(hermit) 的方法更好一些,谢谢了.

另外不知有没有方法实现,如果字段顺序是按表的定义字段的顺序一样时,实现相同的功能?如;
TRAILING NULLCOLS
(
f1,
f2,
f3,
f4 ":f2",
f5,
f6
)

就是想通过指定某个关健字,让f5,f6得到的数据分别为5555,6666,可实际上为:6666,null
zcs_1 2006-08-02
  • 打赏
  • 举报
回复
zmgowin(hermit) 是高手,我用下面的控制文件测试成功了

LOAD DATA
INFILE 'data.txt'
APPEND
INTO TABLE tablename
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
"F1",
"F2",
"F3",
"F5",
"F6",
"F4"":F2"
)
zmgowin 2006-08-02
  • 打赏
  • 举报
回复
TRAILING NULLCOLS
(
f1,
f2,
f3,
f5,
f6,
f4 ":f2"
)
qtj 2006-08-02
  • 打赏
  • 举报
回复
to:zcs_1(生生不息)

如果按照你的方法做的话,f6的值为null,而不是需要的"6666"了.

另外最好在导入的时候就完成任务,不在需要额外的"update"语句.

不过还是要谢谢你了.

zcs_1 2006-08-02
  • 打赏
  • 举报
回复
1、将数据导入到表中
LOAD DATA
INFILE 'data.txt'
APPEND
INTO TABLE tablename
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
"F1",
"F2",
"F3",
"F5",
"F6"
)

2、利用update语句更新f4的数据为f2对应的数据
UPDATE tablename
SET f4=f2;

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧