- Este tópico contém 11 respostas, 4 vozes e foi atualizado pela última vez 14 anos, 5 meses atrás por
Peterson.
-
AutorPosts
-
29 de setembro de 2011 às 6:26 pm #101057
Peterson
ParticipanteBom dia pessoal!
Tenho um arquivo de texto com números de notas fiscais que quero criar uma tabela com eles. o arquivo só tem números de notas e a tabela só terá uma coluna do tipo NUMBER.
segue parte do arquivo.
13304
39223
39224
40059
39002
criei o arquivo de controle do sql loader
LOAD DATA
INFILE ‘notas.txt'”str’rn'”
INTO TABLE notas APPEND
(nota INTEGER)BOM… Funciona, ele importa o mesmo número de registros contidos no arquivo. Porém os dados importados não têm nada a ver com o conteúdo do arquivo. exemplo:
SQL> select * from notas where rownum<11;
NOTA
----------
808661809
842152243
842152243
892350516
808466739
925905969
909390385
959525937
959525937
90919428910 linhas selecionadas.
SQL>
Não tenho nenhum registro no arquivo de entrada com esses números de notas.
Alguém vê algum erro no meu procedimento? No log do sql loader ele não registra erros nem nos arquivos de badfile ou discardfile.
29 de setembro de 2011 às 6:54 pm #101059Peterson
ParticipantePessoal, resolvi o problema, mas ainda fiquei com dúvida. Fazendo esse input dos dados pelo EM ele me gerou o seguinte arquivo de controle:
LOAD DATA
INFILE 'notas.txt'
APPEND
INTO TABLE PETERSON.NOTAS
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(
NOTA INTEGER EXTERNAL
)
Dessa maneira ele importou corretamente todas as linhas. Mas não entendi porque o outro arquivo não funcionou e porque ele colocou a tag de separação de campos por vírgula sendo que tanto o arquivo quanto a tabela só têm um campo para cada registro.
OBS: Versão do banco Oracle 10G. Será que no 10G ele não carrega registros no sqlloader com a opção de STR? para o infile?
30 de setembro de 2011 às 2:47 am #101076burga
ParticipanteTem certeza de que as linhas do seu arquivo terminam com rn?
No Unix/Linux arquivos terminam só com nJá peguei problema também de gerar um arquivo com a formatação do windows (rn) e salvar no e-mail (gmail), depois pegar o arquivo do e-mail, e descobrir que este arquivo tinha sido convertido pra final n, só de por no e-mail…
30 de setembro de 2011 às 4:35 pm #101086Peterson
ParticipanteEntão Burga… fiquei nessa mesma dúvida. Sabe de algum editor de texto que exiba esses caracteres de quebra de linha?
30 de setembro de 2011 às 5:09 pm #101088rman
Participante@Peterson
Para windows conheço o UltraEdit, nele é possível o utilizar o Hex Edit (Ctrl +H), Verifique por 0D 0A ou 0A 0D ou apenas 0D.
30 de setembro de 2011 às 7:54 pm #101095burga
ParticipanteOutro que mostra fácil também é o EditPlus, logo no rodapé dele, parte direita, já apresentam estas informações. E se tiver errado, ele permite modificar.
30 de setembro de 2011 às 8:35 pm #101099diegolenhardt
ParticipanteNotepad++, view > show symbol > show end of line
3 de outubro de 2011 às 6:32 pm #101125Peterson
ParticipanteObrigado amigos! Problema resolvido!
3 de outubro de 2011 às 9:05 pm #101129burga
ParticipanteE aí Peterson, descobriu o que era? Fiquei curioso…
3 de outubro de 2011 às 9:15 pm #101130Peterson
ParticipanteEntão Burga,
O pessoal me passou uma relação de notas fiscais para serem consultadas… eles extraíram essa relação de notas de um relatório do sistema e simplesmente a colarem no bloco de notas, assim sendo não havia os caracteres de quebra de linha ao final de cada linha e o SQLLoader não conseguia trabalhar com os parâmetros que eu passava.
3 de outubro de 2011 às 9:36 pm #101131rman
Participante@Peterson
Não existia os caracteres de quebra de linha ? 😯
Se cada nota estava em uma linha, existe sim.
3 de outubro de 2011 às 9:50 pm #101132Peterson
Participante@rman,
então, abri o arquivo no vi e não havia os caracteres de quebra de linha. Abri um novo documento de texto e digitei alguns números, um em cada linha, abri esse arquivo também no vi e lá estavam os caracteres de quebra de linha.
Não sei dizer oq houve com o arquivo para não conseguir ver esses caracteres lá.
-
AutorPosts
- Você deve fazer login para responder a este tópico.