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.   

    en ,是的,我是想比如把一条记录插入到数据库中,sqlldr能否记录插入到数据库的时间。。把当前的系统时间取出来,然后也插入到表中的时间字段中。
    我的源数据是手工输入的,我是不想在源数据输入时间,想的是在sqlldr到数据库中,能否取一个系统时间,把这个时间也插入到数据库中??????????????????????????
      

  2.   

    1.   alter table table_name modify tdate default sysdate;
    2.   修改控制文件 tdate "sysdate"
    2种都可以
      

  3.   


    你好,修改控制文件tdate "sysdate"
    是可以插入系统当前的时间的,但是有个问题
    以下是ev.csv文件的内容:
    应用条件,变化名称,变化原因 
    lll,333,ppppp
    控制文件内容:
    OPTIONS (skip=1)
    load
    INFILE 'ev.csv'
    BADFILE 'ev.bad'
    APPEND
    INTO TABLE t_ev
    fields terminated by ","
    trailing nullcols
    (
    tdate "sysdate",
    APPBG,
    BGNAME,
    BGREASON
    )执行sqlldr后ev.csv的数据和系统时间插入到了表中,但是csv文件里的数据和数据库表里的数据顺序搞错了,下面为执行sqlldr后插入到数据库表里的数据
    TDATE                   APPBG    BGNAME    BGREASON
    2012/8/29 1:25:00       333      ppppp  
    结果是把csv文件里的第一个字段给弄没了,没有按顺序插入进去
    正确的结果应该是这样,查看数据库的表t_ev:TDATE                   APPBG    BGNAME    BGREASON
    2012/8/29 1:25:00       111       333        ppppp
    请教下ctl文件怎么更改,谢谢啦!!!!!!  
      

  4.   

    把需要设置默认值的列写在最后面,例如:load
    INFILE 'ev.csv'
    BADFILE 'ev.bad'
    APPEND
    INTO TABLE t_ev
    fields terminated by ","
    trailing nullcols
    (
    APPBG,
    BGNAME,
    BGREASON,
    tdate "sysdate"
    )
      

  5.   


    谢谢啦,搞定了,,
    但是不是很明白为什么把tdate写在最后就可以了,,,,sqlldr到数据库时没有按数据库表里的顺序插入数据??
    数据库中表的结构
    tdate   date
    appeg   varchar2
    bgname  varchar2
    bgreason varchar2
      

  6.   

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