我想往一个表中导数据,基本情况如下.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,因为数据的长度是不定的).

解决方案 »

  1.   

    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;
      

  2.   

    to:zcs_1(生生不息) 如果按照你的方法做的话,f6的值为null,而不是需要的"6666"了.另外最好在导入的时候就完成任务,不在需要额外的"update"语句.不过还是要谢谢你了.
      

  3.   

    TRAILING NULLCOLS
    (
    f1,
    f2,
    f3,
    f5,
    f6,
    f4 ":f2"
    )
      

  4.   

    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"
    )
      

  5.   

    to:zcs_1(生生不息) 不好意思,我没有看仔细,你的方法也是可行的,只是方法稍为复杂一点.zmgowin(hermit) 的方法更好一些,谢谢了.另外不知有没有方法实现,如果字段顺序是按表的定义字段的顺序一样时,实现相同的功能?如;
    TRAILING NULLCOLS
    (
    f1,
    f2,
    f3,
    f4 ":f2",
    f5,
    f6
    )就是想通过指定某个关健字,让f5,f6得到的数据分别为5555,6666,可实际上为:6666,null