- Este tópico contém 8 respostas, 3 vozes e foi atualizado pela última vez 12 anos, 10 meses atrás por
João Otávio.
-
AutorPosts
-
29 de janeiro de 2013 às 4:09 pm #105036
João Otávio
ParticipanteBom dia,
Foi me passado a missão (rs) de fazer algo que nunca fiz ainda, que é a importação automática de arquivos para o meu banco de dados.
Eu consigo baixar da web um arquivo de extensão .CSV e gostaria de importar estes dados para dentro de uma tabela, porém esses dados são atualizados a todo momento e por isso, eu tenho que fazer a importação todos os dias, por volta das 7:00 da manhã. Ou seja, devo criar uma rotina diária para a importação destes dados para dentro de uma tabela.
Pelo que eu vi em algumas buscas, parece ser possível de fazer, mas não encontrei um caminho exato para a realização de tal.obs: Abri o arquivo pelo Excel e notei que minhas colunas são delimitadas por ; (ponto e vírgula).
Espero que alguém possa me ajudar.
Grato,
João Otávio.29 de janeiro de 2013 às 7:16 pm #105037rman
Participante@Joao21
Essa importação diária pode ser feita facilmente com o Sql Loader da própria Oracle, caso esteja em ambiente Linux, o agendamento pode ser feito pelo crontab.
29 de janeiro de 2013 às 7:36 pm #105038João Otávio
ParticipanteObrigado pela atenção @rman !
Ouvi dizer mesmo deste SqlLoader e vou pesquisar pra ver qual funcionalidade ele pode me proporcionar.
Até então eu tinha preferência de desenvolver uma Procedure para fazer esse load de .csv, porque será uma importação automática.. você sabe me informar como eu poderia fazer deste modo ?
Eu abri o arquivo no Excel e ele divide as colunas por “;”.. imagino que teria de ser feito um “explode” (como em PHP) para transformar as “;” em colunas.Mais uma vez, muito obrigado.
29 de janeiro de 2013 às 8:42 pm #105039Fábio Prado
Participante@joao21,
Nao tenha dúvidas em usar o SQL Loader. Ele será mais rápido e mais fácil de desenvolver do q vc criar um programa ou stored procedure para fazer o mesmo trabalho. Leia o artigo http://www.fabioprado.net/2010/10/cargas-de-dados-mais-rapidas-com-o-sql.htmlpara vc entender como ele funciona.
[]s
Fábio Prado
http://www.fabioprado.net29 de janeiro de 2013 às 8:55 pm #105040João Otávio
ParticipanteObrigado Fábio !
Por coincidência eu havia lido seu post em uma das minhas pesquisas rsrs.
Vou utilizar mesmo o SQL Loader.Você tem um email para agente trocar informações ?
Grande abraço a todos do GPO !
29 de janeiro de 2013 às 9:38 pm #105041Fábio Prado
ParticipanteNo meu blog vc tem todos os meus contatos, mas adianto que eu não respondo emails diretamente, pois dessa forma a gente não compartilha conhecimentos. Se tiver dúvidas deixe um comentário no artigo que eu respondo por lá, ok?
[]s
30 de janeiro de 2013 às 8:49 pm #105046João Otávio
ParticipanteBoa tarde,
Tentei utilizar SqlLoader, porem está me retornando um erro que eu nao consegui identificar:
[i]
SQLLoader – 704: Internal error: ulconnect: OCIServerAttach [0]
ORA-12514: TNS: listener does not currently know of service requested in connect descriptor[/i]Meu arquivo .CTL está assim:
[i]OPTIONS ( skip=1, rows=10000, errors=10 )
LOAD DATA
INFILE ‘aetc.csv’
BADFILE ‘LoadResults_BAD.log’
DISCARDFILE ‘LoadResults_DISCARDED.log’
APPEND
INTO TABLE TBLA51_FRETE_AEREO
Fields Terminated by “,”
Optionally Enclosed by ‘”‘
Trailing Nullcols
( AETC_CODE,
PLANT_CODE,
SENDER_CODE,
SENDER_NAME,
SENDER_STREET1
)
[/i]e aciono por um arquivo .BAT
[i]@echo off
echo.
sqlldr ‘mms / mms @ MMS’ control=’ControlFile.ctl’ log=’LoadResults.log’
pause[/i]Alguém sabe me dizer o que pode estar ocorrendo ?
30 de janeiro de 2013 às 9:13 pm #105047rman
Participante@Joao21
Me parece que é algum erro de conexão, não é nada especifico do sql loader.
Faça um tnsping da seguinte forma:
tnsping MMS
Tente conectar também via sqlplus nesta instancia.
31 de janeiro de 2013 às 7:48 pm #105049João Otávio
ParticipanteBoa tarde @rman e @fbifabio !
Consegui fazer o meu SQL Loader funcionar perfeitamente !
Alterei a linha para:
sqlldr ‘MMS/mms’ control=’ControlFile.ctl’ log=’LoadResults.log’Muito obrigado a vocês dois, que estão sempre me ajudando. Espero que um dia eu possa lhes retribuir por toda ajuda que vocês tem me proporcionado. Ainda sou um iniciante do Oracle, e logo logo estarei fera, já estou correndo atrás disso.
Grande abraço,
João Otávio -
AutorPosts
- Você deve fazer login para responder a este tópico.