Устранение ошибки «неверный номер» с помощью SQL Loader - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь загрузить следующие данные в таблицу, используя приведенный ниже файл .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: неверный номер

1 Ответ

3 голосов
/ 15 апреля 2019

Потому что в позиции 16 .. у вас есть буква "R", которая не является допустимым символом для типа NUMBER:

Ваши данные:

data: 600-0093889-000R06169024159082020190220000000067.36   
pos : 12345678901234567890
                     ^
                    position 16 has the letter R

Ваше определение загрузчика SQL ..показывает:

IDENTITY_CODE              POSITION ( 16 : 25) CHAR,

, что позиция 16 принадлежит IDENTITY_CODE

, а определение вашей таблицы:

IDENTITY_CODE   1           Y   NUMBER (10)

равно NUMBER .. что приводит к возникшей ошибке.

Я не уверен, как порекомендовать это исправить, и я не совсем уверен, что вы делаете, или конечную цель ... поэтому я не знаю, правильны ли данные / неверны,или определение таблицы правильное / неправильное и т. д.

...