Comando LOAD DATA INFILE para ACCESS, alguém conhece algo parecido ? ((RESOLVIDO))
12 respostas
easrml
Boa tarde Pessoal,
To com o seguinte problema…
Tenho uma aplicação que gera um arquivo csv com 40.000 linhas eu queria importar esse arquivo para um banco de dados ACCESS (não posso utilizar outro), porem utlizando algum comando em JAVA procurei por LOAD DATA INFILE (Mysql) mais sem sucesso, alguém poderia me ajudar ?
Mas se me lembro bem, o access importa um csv para tabela.
Caso nada te agrade, pode pegar a classe de java para ler csv, e usa JDBC ou ODBC para inserir os dados.
easrml
Eu uso JDBC hj porem como o arquivo é muito grande é muito demorado o “import”… via access consigo tbm porem como a aplicação é toda automatica ficaria um pouco fora do foco… Vou analisar esse kettle para ver se adapta ao que preciso, desde já agradeço a atenção pontual.
E
evefuji
mas pelo JDBC você está usando quais recursos? Minha sugestão seria fazer um PreparedStatement, e nele, um addBatch. Provavelmente você já testou isso e não deve ter sido tão rápido quanto queria. Hoje mesmo (usando o kettle) inseri 488327 linhas em 83 segundos em um banco oracle.
easrml
Caraca… rsrsrs tão rapido assim!!! hehe… Verifiquei a documentação e vi que ele é uma IDE que vc arrasta os parametros e faz os imports certo? Ele não gera codigo para seja implementado no projeto ?.. Fiquei impressionado com a rapidez de tua inserção hehehe…
Abraço
E
evefuji
easrml:
Caraca… rsrsrs tão rapido assim!!! hehe… Verifiquei a documentação e vi que ele é uma IDE que vc arrasta os parametros e faz os imports certo? Ele não gera codigo para seja implementado no projeto ?.. Fiquei impressionado com a rapidez de tua inserção hehehe…
Abraço
é isso mesmo, ele é isso mesmo, e eu costumo integrar ele nos projetos através de chamada ao sistema, ele tem um bat e um sh file chamado kitchen, que são manipulados da mesma maneira, recebem parâmetros e o nome do arquivo que você guardou as configurações do seu JOB. Talvez tenha alguma opção mais elegante, visto que ele é em java, talvez possa importar ele como projeto e chamar de forma mais elegante.
Mas vc tentou fazer os addBatch no prepareStatement?
easrml
Então não uso addBatch na verdade nunca usei esse metodo… Vou analisar pra ver…
Flww
easrml
evefuji:
easrml:
Caraca... rsrsrs tão rapido assim?!?! hehe... Verifiquei a documentação e vi que ele é uma IDE que vc arrasta os parametros e faz os imports certo? Ele não gera codigo para seja implementado no projeto ?... Fiquei impressionado com a rapidez de tua inserção hehehe...
Abraço
é isso mesmo, ele é isso mesmo, e eu costumo integrar ele nos projetos através de chamada ao sistema, ele tem um bat e um sh file chamado kitchen, que são manipulados da mesma maneira, recebem parâmetros e o nome do arquivo que você guardou as configurações do seu JOB. Talvez tenha alguma opção mais elegante, visto que ele é em java, talvez possa importar ele como projeto e chamar de forma mais elegante.
Mas vc tentou fazer os addBatch no prepareStatement?
Tentei agora fazer via addBatch porem não adiantou muito ficou na mesma velocidade... vou te passar o código....
Acho que assim deve ter um bom desempenho (ps, se não imprimir saída em todas as iterações, você vai ter um desempenho melhor)
E
evefuji
conseguiu?
easrml
Então… Consegui usando o addBatch agora está demorando menos mais acho q nao vai baixar o tempo… Tava com erro de logica tbm pq pensa… o meu arquivo tem 43 mil linhas mais nessas linhas tem 27 posições de array, ou seja 43000 x 27 = 1 milhão e poucas gravações… Se levar em conta que faz em 8 minutos… Ta bom neh…
Cara agradeço pela força… foi de grande valia… muito obrigado!
F
fre_d
Uma outra coisa que dá para fazer é separar em várias Threads. A inclusão que der erro salvar em um arquivo de log separado a string que representa a linha que deu erro.
Abraço,
Fred
easrml
fre_d:
Uma outra coisa que dá para fazer é separar em várias Threads. A inclusão que der erro salvar em um arquivo de log separado a string que representa a linha que deu erro.
Abraço,
Fred
Isso ja ocorre dentro do try/catch, quando tem algum erro na linha ele grava na log… Vlw