SQL Loader - 无效的数字

时间:2014-12-16 17:54:37

标签: sql oracle loading sql-loader

我试图通过SQLoader加载数据,但它在无效数字的数字字段中给出错误

我的数据文件:

00163604~12002~S~N~N~Panasonic Juicer 1.5l Steel Color~ss~E~A~12/15/2014 3:33:57 PM~N~N~N~Y~294~SA

控制文件:

LOAD DATA
INFILE "/home/dmf/ITEMLOC.txt"
APPEND
INTO TABLE DMF.MIG_ITEM_LC
FIELDS TERMINATED BY "~"
TRAILING NULLCOLS
(
ITEM "SUBSTRB(:ITEM,1,25)",
LOC "TO_NUMBER(:LOC)",
LOC_TYPE "SUBSTRB(:LOC_TYPE,1,1)",
CLEAR_IND "SUBSTRB(:CLEAR_IND,1,1)",
TAXABLE_IND "SUBSTRB(:TAXABLE_IND,1,1)",
LOCAL_ITEM_DESC "SUBSTRB(:LOCAL_ITEM_DESC,1,250)",
LOCAL_SHORT_DESC "SUBSTRB(:LOCAL_SHORT_DESC,1,120)",
STORE_ORD_MULT "SUBSTRB(:STORE_ORD_MULT,1,1)",
STATUS_UPDATE_DATE sysdate,
STATUS "SUBSTRB(:STATUS,1,1)",
STORE_PRICE_IND "SUBSTRB(:STORE_PRICE_IND,1,1)",
RPM_IND "SUBSTRB(:RPM_IND,1,1)",
EXT_UIN_IND "SUBSTRB(:EXT_UIN_IND,1,1)",
RANGED_IND "SUBSTRB(:RANGED_IND,1,1)",
PRIMARY_SUPP "TO_NUMBER(:PRIMARY_SUPP)",  -- The Error is coming here
PRIMARY_CNTRY "SUBSTRB(:PRIMARY_CNTRY,1,3)"
)

已拒绝 - 表格DMF.MIG_I​​TEM_LC,列PRIMARY_SUPP出错。 ORA-01722:无效数字

如果我写它给它不变,它会成功加载。

可能是什么问题?

1 个答案:

答案 0 :(得分:0)

您发布的数据对我来说很好。

SQL> select version from v$instance;

VERSION
-----------------
11.2.0.2.0

这是我使用的create table语句:

create table test1
(
item varchar2(25),
loc number,
loc_type char(1),
clear_ind char(1),
taxable_ind char(1),
local_item_desc varchar2(250),
local_short_desc varchar2(120),
store_ord_mult char(1),
status char(1),
store_price_ind char(1),
rpm_ind char(1),
ext_uin_ind char(1),
ranged_ind char(1),
primary_supp number,
primary_cntry varchar2(3)
);

如果在尝试仅加载您发布的一条记录时出现此错误,那么我会怀疑一个不可打印的字符,如@Gary_W建议的那样。使用十六进制查看器查看数据以进行检查。

文件和NLS_LANG设置之间的字符集差异可能有问题,但我怀疑在这种情况下,因为您的数据看起来都是ASCII值。