- Este tópico contém 8 respostas, 3 vozes e foi atualizado pela última vez 13 anos, 9 meses atrás por
armandoveloso.
-
AutorPosts
-
6 de junho de 2012 às 12:26 am #103763
armandoveloso
ParticipantePessoal,
Estou com dificuldades com o SQL Loader.
Recebi um arquivo .csv enorme, com mais de 2 milhões de registros, e tem umas 70 colunas.
As colunas são separadas por “;”.
Não tenho a DDL de criação da tabela.
Preciso importar pro oracle, mas somente interessa à empresa a importação de 4 colunas, e não sao as 4 primeiras do arquivo .csv, sao alternadas.
O excell nao consegue abrir todas as linhas, mas ao carregou pequena parte e vi que a primeira linha é com o nome das colunas.
Criei uma tabela com 4 colunas e usei isso no sql loader:
LOAD DATA
INFILE ‘tb_teste.csv’
INSERT
INTO TABLE TB_TESTE
FIELDS TERMINATED BY ‘;’
(COLUNA_D, COLUNA, I, COLUNA_M, COLUNA_Z)Ele importa todos os registros, mas pegando as quatro primeiras colunas: Coluna A, B, C e D. Nao consigo pegar as colunas D, I, M e z.
Alguem pode me ajudar?
Obrigado,
Armando.6 de junho de 2012 às 3:06 pm #103766rman
Participante@armandoveloso
Você pode seguir outro caminho. Utilize EXTERNAL TABLE, depois é só fazer um CREATE AS SELECT com as colunas desejadas.
6 de junho de 2012 às 3:13 pm #103768marlontk
ParticipanteOpa,
Porque não criar uma tabela temporária com todos os campos importar e depois criar uma outra tabela e via select inserir os dados necessários?6 de junho de 2012 às 3:24 pm #103769armandoveloso
Participantemarlontk,
É que não tenho nem noção do tipo e tamanho de cada uma dessas colunas, e como são bem 80, fica complicado de criar a tabela…
rman,
vou entao estudar essa sua dica, nao conheço.Obrigado a vcs pela ajuda!
Armando.
6 de junho de 2012 às 3:41 pm #103770armandoveloso
Participanterman,
Para usar EXTERNAL TABLE, pelo que entendi eu teria a mesma dificuldade, pois não tenho o formato dos campos e pra usar essa opção eu teria que saber a DDL da tabela tambem, ja que pela posição (position) não tem como usar, pois é um .csv
Armando.
6 de junho de 2012 às 3:48 pm #103771rman
Participante@armandoveloso
Então vamos tentar simplificar o problema, veja o que da pra fazer:
1- Gere o CSV apenas com as colunas necessárias, ai você tem um leque de solução bem maior.
2- Obtenha a DDL da tabela, provavelmente quem gerou o CSV tem essa informação.
A solução não precisa ser 100% técnica, as vezes um telefonema já adianta todo trabalho.
6 de junho de 2012 às 3:58 pm #103772armandoveloso
Participanterman,
Não tenho como gerar o csv, esse csv veio de um órgão do Estado, mas é como vc disse mesmo, ja pedi que a administracao daqui entre em contato com esse órgao pra tentarmos a DDL da tabela ou mesmo que eles gerem esse csv apenas com as 4 colunas que nos interessa.
[]’s
Armando.6 de junho de 2012 às 4:20 pm #103773marlontk
ParticipanteJá tentou criar uma tabela com os campos como varchar2(1000) por exemplo que são campos que aceitam numero e texto, com uma extensão considerável apenas para testar a importação dos dados?
8 de junho de 2012 às 2:03 am #103780armandoveloso
Participantemarlontk e demais,
Pelas poucas linhas que consegui abrir, vi que os campos eram de tamanho pequeno, entao criei com tamanho 100.
Na metade do carregamento, com um pouco mais de 1 milhao de linhas importadas, da o seguinte erro:
SQL*Loader-605: Non-data dependent ORACLE error occurred — load discontinued.
Armando.
-
AutorPosts
- Você deve fazer login para responder a este tópico.