请教各位大虾,因为要导入的文件名中有日期,所以无法在控制文件中指定多个infile来完成。
是否能在sqlldr命令中完成。如“sqlldr   连接数据库     data= ”。或者其他方法。谢谢了ps:一个文件一个文件逐个load的方法就免了。

解决方案 »

  1.   

    只能在control文件中指定,文件名有日期也没关系啊,你把control file结构发上来看看
      

  2.   

    控制文件就是一般很普通的。因为要导入的文件每天有会有,比如说今天是20090902data.txt文件,明天就是要导入20090903data.txt文件了。这样的话,控制文件就得每天动态生成。
      

  3.   

    可以在控制文件中不指定数据文件名,而是用data参数来指定数据文件,控制文件中把INFILE 部分去掉就可以了。
      

  4.   

    大侠,请教用data参数如何写呢? 能否给个例子参考下,谢谢!
      

  5.   

    比如表名为dept,有三个数据项,其字段名称和类型为名称 字段类型
    DEPTNO NUMBER(2)
    DNAME VARCHAR2(10)
    LOC VARCHAR2(10)有数据文件,内容为
    10,Sales,USA 
    20,Accounting,"Virginia,USA"  
    30,Consulting,Virginia  
    40,Finance,Virginia则控制文件ctl.txt的内容为
    LOAD DATA
    INTO TABLE DEPT
    APPEND
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    (DEPTNO,
    DNAME,
    LOC)sqlldr命令为
    sqlldr scott/tiger control=ctl.txt data=df.txt
      

  6.   

    您这个data=df.txt一次只导入一个文件,我想有没有办法data参数关联多个文件,一次进行导入呢? thanks lot
      

  7.   

    刚查了下,控制文件中可以指明多个INFILE,如一个控制文件的INFILE部分可以是
    INFILE  mydat1.dat  BADFILE  mydat1.bad  DISCARDFILE mydat1.dis 
    INFILE  mydat2.dat 
    INFILE  mydat3.dat  DISCARDFILE  mydat3.dis 
    INFILE  mydat4.dat  DISCARDMAX  10 0则对于上面的例子,修改如下:
    ----------------------
    名称 字段类型 
    DEPTNO NUMBER(2) 
    DNAME VARCHAR2(10) 
    LOC VARCHAR2(10) 有数据文件df1.txt,内容为 
    10,Sales,USA 
    20,Accounting,"Virginia,USA"  
    30,Consulting,Virginia  
    40,Finance,Virginia 有数据文件df2.txt,内容为 
    10,Sales,USA 
    20,Accounting,"Virginia,USA"  
    30,Consulting,Virginia  
    40,Finance,Virginia 则控制文件ctl.txt的内容为 
    LOAD DATA 
    INFILE df1.txt
    INFILE df2.txt
    INTO TABLE DEPT 
    APPEND 
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
    (DEPTNO, 
    DNAME, 
    LOC) sqlldr命令为 
    sqlldr scott/tiger control=ctl.txt
    ------------------------------------------
      

  8.   

    大虾,我前面的回复就说了,我的文本文件名中有日期,如果使用infile的方式,就需要每天动态生成ctl文件,或者手工修改控制文件了。我想有没有办法通过data参数确定,这样日期就可以从批处理bat文件中传进去了。 不知道我说明白了没有
      

  9.   

    您的意思是写个bat,把我要导入的文本文件合并成一个文件。
    然后再用sqlldr进行导入吗?   
      

  10.   

    我试过了,data参数只能接受一个文件,不能接受多个文件,实在是没办法了.看看用其他方式把文本文件给处理一下,合并成一个文件再用sqlldr