Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle Sql Loader ORA-01722:número inválido ao carregar arquivo CSV com terminações de linha do Windows


Recentemente, encontrei o mesmo problema ao carregar dados em minha tabela via arquivo csv. Meu arquivo ficou assim:
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 EXTERNAL
    )

E como você mencionou, eu continuei recebendo o mesmo erro 'número inválido' Acontece que isso geralmente ocorre - quando o tipo de dados da sua coluna é Número, mas os dados que você está obtendo do seu arquivo csv estão em string, então o oracle loader falha ao realizar uma conversão de string to number.- quando seu campo no arquivo csv é encerrado por alguns delimitadores, digamos espaço, guias etc.

Foi assim que alterei meu arquivo ctl:
 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 Whitespace
    )