所需导入的文件(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的时候,将汉字当一位字符处理。
结果导致导入数据错误或无法导入。
请问各位有经验人士,遇到这样问题怎么解决?
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的时候,将汉字当一位字符处理。
结果导致导入数据错误或无法导入。
请问各位有经验人士,遇到这样问题怎么解决?
比如在 PLSQL导入器中配置,到"1"时,第三段结束。
但是有的文件中第三段内容包含数字"1",
比如 “中山大道1号123栋***工作室” 等字样。
很是头疼,望各位大大帮忙解决。
'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)
)
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
SQL> select * from test;KEY1 KEY2 KEY3 KEY4
-------- ------ -------------------- -------------
20080101 000001 中百仓储连锁超市公司 1560000000000
20080101 000002 CCTV2 1560000000000
但是 PL/SQL 的文本导入工具就不行,把汉字当一个字符识别。
我先前在进行SQLLDR 的时候,上千万条数据,达到提交点的才3000多条。
bad文件里也只有很少量的数据。 我习惯性认为了SQLLDR 和 PL/SQL 一样把汉字占位处理错了。
结果刚才仔细检查,发现不是这个问题。。文件格式正确,导入的配置文件也是正确的(分公司提供的,测试正常)SQLLDR未达到提交点也应该保留到 bad文件中啊? 难道不是这样么?
BAD是保存错误记录的文件
但是数据还是跑不进去,BAD里面只有失败数据的万分之一不到。
后来改用其他的方法实现了数据导入。