最简单的办法,在执行sqlldr之前,先自己写个小程序,把第一个分号之前的内容取出来就行了

解决方案 »

  1.   

    表结构如下:
    create table table1(f1 varchar2(50),f2 number,f3 number,f4 number);控制文件内容如下:
    LOAD DATA
    INFILE *
    INTO TABLE  table1 truncate
    FIELDS  TERMINATED  BY ','  
    (f1,f2,f3,f4 TERMINATED  BY ';')
    BEGINDATA
    000000000002021303010250447777,98,2,10966;0;2P_060202140827_10RFPT10Z060202140227.0212.cdK;0;20060202141139;10472:202,1$;
    90594274,1099,2,0;0;0;2P_060202140827_10RFPT10Z060202140227.0212.cdK;0;20060202141139;;
    000000000002021402010250434173,98,2,0;0;0;2P_060202140827_10RFPT10Z060202140227.0212.cdK;0;20060202141139;;执行
    sqlldr userid=test@SERVER1/test control=demo1.ctl log=demo1.log
    再在sqlplus中查询
    SQL> select * from table1;F1                                                         F2         F3         F4
    -------------------------------------------------- ---------- ---------- ----------
    000000000002021303010250447777                             98          2      10966
    90594274                                                 1099          2          0
    000000000002021402010250434173                             98          2          0