文件:CASE1.CTL 
LOAD DATA //控制文件的开始标志
INFILE CASE1.DAT
INTO TABLE dept
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(deptno, dname, loc)//指出表的字段文件:CASE1.DAT 
12,RESEARCH,"SARATOGA" 
10,"ACCOUNTING",CLEVELAND
11,"ART",SALEM
13,FINANCE,"BOSTON"
21,"SALES",PHILA.
22,"SALES",ROCHESTER
42,"INT'L","SAN FRAN"
执行:sqlldr userid=bbb/bbb@lis control=case1.ctl log=case1.log

解决方案 »

  1.   

    有一文本文件,制表符分隔,起名为text.txt,保存到C:\1.创建表结构
       SQL> create table test
        (
        id       number,        --序号
        username    varchar2(10),     --用户名
        password    varchar2(10),     --密码
        sj       varchar2(20)      --建立日期
        );2.创建SQL*Loader输入数据所需要的文件,均保存到C:\,用记事本编辑:
       控制文件:input.ctl,内容如下:  load data           --1、控制文件标识
      infile 'test.txt'       --2、要输入的数据文件名为test.txt
      append into table test    --3、向表test中追加记录
      fields terminated by X'09'  --4、字段终止于X'09',是一个制表符(TAB)
      (id,username,password,sj)   -----定义列对应顺序a、insert,为缺省方式,在数据装载开始时要求表为空
    b、append,在表中追加新记录
    c、replace,删除旧记录,替换成新装载的记录
    d、truncate,同上7、在DOS窗口下使用SQL*Loader命令实现数据的输入C:\>sqlldr userid=system/manager control=input.ctl
      

  2.   

    用EXCEL转化成
    等间隔的文本文件。改变控制文件。
      

  3.   

    sun9989(一品黄山) 的方法是可以,但太麻烦
    其他2位可能未明白我得意思:
    文件是别人已经形成好了的,现假设有10列数据,我只想提取奇数列的数据,控制文件应该怎么写。
    注意:文件不是定长的
      

  4.   

    TO: freebird_xh(我思故我在) ( 
       假如你的文本文件有10列,那么你的表呢,是5列吗?
      

  5.   

    其实你的问题是了可以解决的,用POSITION就可以

    LOAD DATA
    INFILE 'freebird.txt'
    into table freebird
    (field1 position(01:10) varchar2,
     field2 position(20:30) varchar2,
     field3 position(40:50) varchar2,
     field4 position(60:70) varchar2)
      

  6.   

    我刚才写错了,应该这样LOAD DATA
    INFILE 'freebird.txt'
    into table freebird
    (field1 position(01:10),
     field2 position(20:30),
     field3 position(40:50),
     field4 position(60:70))还有你的问题,也可以编一个PERL小程序解决,很容易的,我可以
    帮你把需要的列提取出来形成一个新的文本文件。而只要运行一下
    PERL程序就可以了
      

  7.   

    ATCG(ATCG) :文件是10列数据,而表只有5列,所以才要提取指定列的数据阿,不然用FILTER就行了。
         还有你的方法行不通的,我说了,文件不是按间隔分开的,而是用tab键分开的,那么你的POSITION就派不上用场了啊。
        写程序去处指定列,这确实可以,但我的文件是话单文件,很大,这样似乎有点不划算。还有其它办法吗?我的本意就是通过控制文件达到效果,帮忙
      

  8.   

    如果你的文本文件永远是10列,表是5列,我可以帮你编写一个PERL小程序
    用来生成一个新的文本文件,这个新的文本文件让你导入到表里面。
    即使你的10列的文本文件有100万行,我的PERL程序只要短短的几十秒就可以
    完成。而且这样还可以避免在控制文件里判断那些要导入,那些不要导入的时间
    上的浪费,有的时候非常影响速度。
      

  9.   

    当然,我的PERL程序对于你的固定的条件是一劳永逸的,不过还得麻烦你自己
    到www.activeperl.com去下载一个PERL,然后再安装一下,也很快的,PERL是个
    好东东!
      

  10.   

    你要用控制文件达到效果也是可以的,给你一个例子,在ORACLE8.1.7下调试通过文本文件TEST.TXT,用TAB键分隔:
    ab 10 cd
    ef 20 gh表AA结构
    ----------------------------------------- -------- -----------
    NAME                                               VARCHAR2(8)
    SCORE                                              NUMBER(2)
    GS                                                 VARCHAR2(8)控制文件内容
    load data
    infile 'test.txt'
    into table aa
    (Name position(01:02),
     score position(04:05),
     gs position(07:08))
      

  11.   

    感谢你的帮忙,不过我还是有疑问,如果你有QQ的话,请加我为好友:20786471。我这个问题很急,麻烦了。如果没有QQ,请与[email protected]联系,谢谢了。
      

  12.   

    我没有QQ,看来QQ还是很方便的,下次我去申请一个,我不知道你现在的疑问,
    可否把你的文本列出来,一两行就够了,我看看给你一个解决的方案。