日期:2014-05-17  浏览次数:20715 次

sqlldr 控制文件
tmp.csv文件内容
#一 事件
事件序号 事件内容
1 发生一次警报
4 发生三次警报
#二 新闻
事件序号 事件内容
1 新闻事件发生一次
3 发生二次



我想写个控制文件,导入到数据库event表中,event表中的字段:tdate(date),eventname(varchar2),
eventid(number),eventcontent(varchar)

另外还有一个问题,就是csv文件中没有日期,但是我需要执行sqlldr时,把当前系统的日期给插入到数据库event表中

我想要的结果:
tdate eventname eventid eventcontent
20120826 事件 1 发生一次警报
20120827 事件 4 发生三次警报
20120827 新闻 1 新闻事件发生一次
20120827 新闻 3 事件发生二次



谢谢大家了。。。。




------解决方案--------------------
时间字段是怎么出来的 你的源数据没有事件发生时间啊
------解决方案--------------------
1. alter table table_name modify tdate default sysdate;
2. 修改控制文件 tdate "sysdate"
2种都可以

------解决方案--------------------
把需要设置默认值的列写在最后面,例如:

load
INFILE 'ev.csv'
BADFILE 'ev.bad'
APPEND
INTO TABLE t_ev
fields terminated by ","
trailing nullcols
(
APPBG,
BGNAME,
BGREASON,
tdate "sysdate"
)

------解决方案--------------------
这样的确可能被覆盖,你可以试试(
tdate "sysdate"
APPBG, position(:)
BGNAME,position(:)
BGREASON,position(:)
),这样应该就不会错了。
可以学学10g的这个sqlldr教程
http://docs.oracle.com/cd/B13789_01/server.101/b10825/ldr_cases.htm#i1007813