2016-05-30 7 views
2

Я загрузки данных в мою таблицу с помощью SQL Loader загрузки данных прошло успешно, но I''m получения (повторяющееся) значения мусора в определенном столбце для всех строкзагрузка данных в таблице с помощью SQL Loader

После вставки : столбец TERM_AGREEMENT получает значение «806158336» для каждой записи В моем файле csv содержатся данные из 3-х значных цифр для этого столбца, но я вынужден установить определение столбца на номер (10).

LOAD DATA 
    infile '/ipoapplication/utl_file/LBR_HE_Mar16.csv' 
    REPLACE 
    INTO TABLE LOAN_BALANCE_MASTER_INT 
    fields terminated by ',' optionally enclosed by '"' 
    (
    ACCOUNT_NO, 
    CUSTOMER_NAME, 
    LIMIT, 
    REGION, 

    **TERM_AGREEMENT INTEGER** 
    ) 

create table LOAN_BALANCE_MASTER_INT 
(
    ACCOUNT_NO    NUMBER(30), 
    CUSTOMER_NAME   VARCHAR2(70), 
    LIMIT     NUMBER(30), 

    PRODUCT_DESC   VARCHAR2(30), 
    SUBPRODUCT_CODE  NUMBER, 

    ARREARS_INT   NUMBER(20,2), 
    IRREGULARITY   NUMBER(20,2), 
    PRINCIPLE_IRREGULARITY NUMBER(20,2), 


    **TERM_AGREEMENT   NUMBER(10)** 
) 
+0

Может ли '806158336' быть номером учетной записи следующей строки? –

+0

нет, номер счета всего 7 цифр. И как он дает мне то же значение для 3987 строк? Я даже выполнил следующую команду (AIX): cat LBR_HE_Mar16.csv | grep 806158336, и записей не найдено. –

ответ

1

Я на самом деле решил эту проблему самостоятельно. Во-первых, спасибо @Gary_W И @Alessandro за их входные данные. Очень ценю вашу помощь, ребята, выучили некоторые новые вещи в этом процессе. Вот новый фрагмент, который работал и я получил правильные данные для последнего столбца

LOAD DATA 
    infile '/ipoapplication/utl_file/LBR_HE_Mar16.csv' 
    REPLACE 
    INTO TABLE LOAN_BALANCE_MASTER_INT 
    fields terminated by ',' optionally enclosed by '"' 
    (
    ACCOUNT_NO, 
    CUSTOMER_NAME, 
    LIMIT, 
    REGION, 

    **TERM_AGREEMENT INTEGER Terminated by Whitspace** 
    ) 
  • «Отменен пропусками» - я прошел через несколько нитей SQL Loader и я использовал «останавливал пробела» в последний столбец его файла ctl. он работал, на этот раз мне даже не пришлось использовать «INTEGER» или «EXTERNAL» или EXPRESSION «..» для преобразования. Только одно, теперь, ребята, позвольте мне сейчас, что могло бы создать проблему? Что было в моем файле csv в этой колонке и как, добавив эту вещь, решила проблему? Спасибо.
+0

использовал это как ссылку http://stackoverflow.com/questions/28323414/multiple-rows-in-single-field-not-getting -loaded-SQL-загрузчик-оракул? RQ = 1 –

1

ЦЕЛОЕ для двоичного типа данных. Если вы импортируете файл csv, я полагаю, что цифры хранятся как обычный текст, поэтому вы должны использовать INTEGER EXTERNAL. Предложение EXTERNAL указывает символьные данные, которые представляют собой число.

Редактировать: Проблема, кажется, является символом завершения файла. Вы должны быть в состоянии решить эту проблему путем редактирования входной_файл линию таким образом:

INFILE'/ipoapplication/utl_file/LBR_HE_Mar16.csv' "STR X'5E204D'" 

Где 5E204D 'является шестнадцатеричным для «^ М». Чтобы получить шестнадцатеричное значение, вы можете использовать следующий запрос:

SELECT utl_raw.cast_to_raw ('^ M') AS hexadecimal FROM dual; 

Надеюсь, это поможет.

+0

Я использовал INTEGER, потому что без него я получал ошибку ORA-01722: недопустимый номер, хотя в моем файле csv я изменил его тип данных на «Общее». Даже с INTEGER EXTERNAL я получаю такую ​​же ошибку, записи отклонены. –

+0

Если вы можете предоставить строку примера вашего csv, это поможет решить проблему. –

+0

: Файл на сервере: 3041295, Mr. ASHVINBHAI PRAVINBHAI DESAI, 600000, WEST, 216, SURAT ФИЛИАЛ, 1,29-Jan-09,03-Jan-21,7201,7201-HOME КАПИТАЛ, 101, ДОМАШНИЙ СОБСТВЕННЫЙ ФИНАНСИРОВАНИЕ - RES, полностью расширенный, 80 5816,19.25 , 600000,381412,381386,381386,0,0,0,0, -27,0,0,0,03-февраль-09,10239,02-Apr-16,03-Apr-16,58,85, 0,0,0, ECS, PROCESSED ,, 3,29-Jan-09,0,0,0, 1171,26,120, N, 1, AKOPD2862M, 0^M –