我正在尝试使用下面的.fmt文件将以下数据加载到表中。
600-0093889-000R06169024159082020190220000000067.36
600-0134686-000R06169024159082620190214000000123.33
600-0134686-000R06169024159069520190214000000123.33-
600-0093889-000R06169024159082620190220000000067.36-
600-0122474-000R06169024159069520190227000001000.00-
500-0433040-000R06168993159082620190227000000250.00-
550-0046451-000R06168984159069520190227000000200.00-
600-0124821-000R06169024159069520190227000000925.00-
600-0107803-000R06165180159082620190227000000372.12-
我的.fmt文件如下:
LOAD DATA
APPEND INTO TABLE USB.INFOLEASE_CHG_OFF_0228
(
ID_NUMBER POSITION ( 1 : 15) CHAR,
IDENTITY_CODE POSITION ( 16 : 25) CHAR,
ID_RECORD_NBR POSITION ( 26 : 27) CHAR,
DLY_AS_OF_DATE POSITION ( 28 : 35) DATE 'YYYYMMDD',
AS_OF_DATE POSITION ( 36 : 43) DATE 'YYYYMMDD',
GL_ACCOUNT_ID POSITION ( 68 : 74) DATE 'YYYYMMDD',
ORG_UNIT_ID POSITION ( 64 : 67) CHAR,
ILC_CONTRACT_NUMBER POSITION ( 44 : 58) CHAR,
ILC_CHGOFF_RCVY_IND POSITION ( 59 : 59) CHAR,
ILC_BANK POSITION ( 60 : 63) CHAR,
ILC_OFFICE POSITION ( 64 : 67) CHAR,
ILC_ACCOUNT POSITION ( 68 : 74) CHAR,
ILC_POSTING_DATE POSITION ( 75 : 82) DATE 'YYYYMMDD',
ILC_AMOUNT POSITION ( 83 : 95) CHAR
)
这是表模式:
ColumnName ColID PK IndexPos Null DataType
IDENTITY_CODE 1 Y NUMBER (10)
ID_NUMBER 2 Y VARCHAR2 (30 Byte)
ID_RECORD_NBR 3 Y NUMBER (2)
GL_ACCOUNT_ID 4 Y NUMBER (14)
ORG_UNIT_ID 5 Y NUMBER (14)
AS_OF_DATE 6 Y DATE
DLY_AS_OF_DATE 7 Y DATE
ILC_CONTRACT_NUMBER 8 Y CHAR (15 Byte)
ILC_CHGOFF_RCVY_IND 9 Y CHAR (1 Byte)
ILC_BANK 10 Y CHAR (4 Byte)
ILC_OFFICE 11 Y CHAR (4 Byte)
ILC_ACCOUNT 12 Y CHAR (7 Byte)
ILC_POSTING_DATE 13 Y DATE
ILC_AMOUNT 14 Y NUMBER (13
当我尝试加载数据时,出现以下错误:
记录35:已舍弃-所有列均为空。记录1:已拒绝-错误发生 表USB.INFOLEASE_CHG_OFF_0228,列IDENTITY_CODE。 ORA-01722: 无效的号码
记录2:已拒绝-表USB.INFOLEASE_CHG_OFF_0228的错误,列 IDENTITY_CODE。 ORA-01722:号码无效
记录3:已拒绝-表USB.INFOLEASE_CHG_OFF_0228的错误,列 IDENTITY_CODE。 ORA-01722:号码无效
记录4:拒绝-表USB.INFOLEASE_CHG_OFF_0228上的错误 IDENTITY_CODE。 ORA-01722:号码无效
记录5:拒绝-表USB.INFOLEASE_CHG_OFF_0228上的错误 IDENTITY_CODE。 ORA-01722:号码无效
记录6:拒绝-表USB.INFOLEASE_CHG_OFF_0228上的错误 IDENTITY_CODE。 ORA-01722:号码无效
记录7:拒绝-表USB.INFOLEASE_CHG_OFF_0228上的错误 IDENTITY_CODE。 ORA-01722:号码无效
记录8:拒绝-表USB.INFOLEASE_CHG_OFF_0228上的错误 IDENTITY_CODE。 ORA-01722:号码无效
记录9:拒绝-表USB.INFOLEASE_CHG_OFF_0228上的错误 IDENTITY_CODE。 ORA-01722:号码无效
记录10:已拒绝-表USB.INFOLEASE_CHG_OFF_0228出错, 列IDENTITY_CODE。 ORA-01722:号码无效
记录11:已拒绝-表USB.INFOLEASE_CHG_OFF_0228出错, 列IDENTITY_CODE。 ORA-01722:号码无效
记录12:已拒绝-表USB.INFOLEASE_CHG_OFF_0228出错, 列IDENTITY_CODE。 ORA-01722:号码无效
答案 0 :(得分:3)
因为在位置16 ..您有字母“ R”,它不是NUMBER类型的有效字符:
您的数据:
data: 600-0093889-000R06169024159082020190220000000067.36
pos : 12345678901234567890
^
position 16 has the letter R
您的SQL Loader定义..显示:
IDENTITY_CODE POSITION ( 16 : 25) CHAR,
位置16属于IDENTITY_CODE
和您的表定义:
IDENTITY_CODE 1 Y NUMBER (10)
是NUMBER ..会导致您遇到错误。
我不确定如何建议解决此问题,也不完全确定您在做什么,或者最终目的..所以我不知道数据是否正确/不正确,或者表是否正确定义正确/不正确,等等。