所需导入的文件(input1.txt)内容大致如下:20080101000001中百仓储连锁超市公司1560000000000
20080101000002CCTV2               1560000000000sqlldr文件大致如下:Load Data
into table table1 append
( key1 position (01:8) integer external,
key2 position (9:14) integer external,
key3 position (15:34) integer external,
key4 position (35:47) integer external)
sqlldr对定长文本文件数据导入,所遇到的问题是:
input1.txt 文件生成的时候,汉字占2位字符位,例如"中百仓储连锁超市公司"占20位字符
"CCTV2               "也是20位字符。
[sqlldr] 和 [PLSQL文本导入器] 在导入input1.txt的时候,将汉字当一位字符处理。
结果导致导入数据错误或无法导入。
请问各位有经验人士,遇到这样问题怎么解决?

解决方案 »

  1.   

    我试过在第三段采用字符结尾的形式处理。
    比如在 PLSQL导入器中配置,到"1"时,第三段结束。
    但是有的文件中第三段内容包含数字"1",
    比如 “中山大道1号123栋***工作室”  等字样。
    很是头疼,望各位大大帮忙解决。
      

  2.   

    'CCTV2                               '可是有36位啊
      

  3.   

    你的文本有问题,我测试了,一点问题也没有,如上我说的
    'CCTV2                               '有36位
    LOAD DATA
    INFILE 'test.dat'
    APPEND
    INTO TABLE test
    TRAILING NULLCOLS
    (
    key1 position (1:8),
    key2 position (9:14), 
    key3 position (15:34), 
    key4 position (35:47)

      

  4.   

    SQL> select * from test;未选定行C:\>more test.dat
    20080101000001中百仓储连锁超市公司1560000000000
    20080101000002CCTV2               1560000000000C:\>sqlldr userid=test/test control=test.ctlSQL*Loader: Release 10.2.0.1.0 - Production on 星期四 1月 10 10:25:51 2008Copyright (c) 1982, 2005, Oracle.  All rights reserved.达到提交点 - 逻辑记录计数 2
    SQL> select * from test;KEY1     KEY2   KEY3                 KEY4
    -------- ------ -------------------- -------------
    20080101 000001 中百仓储连锁超市公司    1560000000000
    20080101 000002 CCTV2  
      

  5.   

    应该是这样的,这里的帖子不能编辑
    SQL> select * from test;KEY1     KEY2   KEY3                 KEY4
    -------- ------ -------------------- -------------
    20080101 000001 中百仓储连锁超市公司    1560000000000
    20080101 000002 CCTV2                1560000000000
      

  6.   

    我试了下,SQLLDR 确实将汉字当成了两个字符占位处理。
    但是  PL/SQL 的文本导入工具就不行,把汉字当一个字符识别。
    我先前在进行SQLLDR 的时候,上千万条数据,达到提交点的才3000多条。
    bad文件里也只有很少量的数据。 我习惯性认为了SQLLDR 和 PL/SQL 一样把汉字占位处理错了。
    结果刚才仔细检查,发现不是这个问题。。文件格式正确,导入的配置文件也是正确的(分公司提供的,测试正常)SQLLDR未达到提交点也应该保留到 bad文件中啊? 难道不是这样么?
      

  7.   

    你需检查LOG文件 到底错在哪里
    BAD是保存错误记录的文件
      

  8.   

    实在不行用excel等软件把文件处理一下再用吧
      

  9.   

    SQLLDR 确实将汉字当两个字符处理。
    但是数据还是跑不进去,BAD里面只有失败数据的万分之一不到。
    后来改用其他的方法实现了数据导入。