importação em massa
pessoal,
tenho uma atualização para fazer mensalmente, recebo cerca de 400 txt com dados para fazer importação, os arquivos vem modelados com largura fixa. e preciso unificar esses arquivos para importar para o banco de dados. queria fazer um script para essa importação, atualmente eu transformo tudo em 6 csv com 900k linhas e importo para o sql e demora cerca de 4 horas.
tenho uma atualização para fazer mensalmente, recebo cerca de 400 txt com dados para fazer importação, os arquivos vem modelados com largura fixa. e preciso unificar esses arquivos para importar para o banco de dados. queria fazer um script para essa importação, atualmente eu transformo tudo em 6 csv com 900k linhas e importo para o sql e demora cerca de 4 horas.
Djacy Neto
Curtidas 0
Melhor post
Renato Neto
18/02/2020
Caro colega,
Todo SGBD possui um utilitário de linha de comando, cuja a finalidade é fazer carga de arquivos externos para dentro do banco. No caso do mysql você pode se baser pelo manual da a sua correta parametrização, conforme pode ver no link abaixo:
Exemplo de uso:
LOAD DATA LOCAL INFILE ''abc.csv'' INTO TABLE abc
FIELDS TERMINATED BY '',''
ENCLOSED BY ''"''
LINES TERMINATED BY ''\\\\r\\\\n''
IGNORE 1 LINES
(col1, col2, col3, col4, col5...);
Fonte: https://stackoverflow.com/questions/14127529/mysql-import-data-from-csv-using-load-data-infile
Ainda asssi, caso queira automatizar esse processo, através de alguma aplicação, pode chamar esse utilitário através da mesma.
Todo SGBD possui um utilitário de linha de comando, cuja a finalidade é fazer carga de arquivos externos para dentro do banco. No caso do mysql você pode se baser pelo manual da a sua correta parametrização, conforme pode ver no link abaixo:
https://dev.mysql.com/doc/refman/8.0/en/load-data.html
Exemplo de uso:
LOAD DATA LOCAL INFILE ''abc.csv'' INTO TABLE abc
FIELDS TERMINATED BY '',''
ENCLOSED BY ''"''
LINES TERMINATED BY ''\\\\r\\\\n''
IGNORE 1 LINES
(col1, col2, col3, col4, col5...);
Fonte: https://stackoverflow.com/questions/14127529/mysql-import-data-from-csv-using-load-data-infile
Ainda asssi, caso queira automatizar esse processo, através de alguma aplicação, pode chamar esse utilitário através da mesma.
GOSTEI 1
Mais Respostas
Emerson Nascimento
18/02/2020
você faz diretamente pelo banco de dados ou usa algum programa pra efetuar essa carga de dados?
GOSTEI 0
Djacy Neto
18/02/2020
você faz diretamente pelo banco de dados ou usa algum programa pra efetuar essa carga de dados?
nesse caso direto sgbd, que hoje estou usando o mysql.
GOSTEI 0
Renato Neto
18/02/2020
você faz diretamente pelo banco de dados ou usa algum programa pra efetuar essa carga de dados?
nesse caso direto sgbd, que hoje estou usando o mysql.Vai pelo LOAD DATA que é sucesso!
GOSTEI 1
Djacy Neto
18/02/2020
você faz diretamente pelo banco de dados ou usa algum programa pra efetuar essa carga de dados?
nesse caso direto sgbd, que hoje estou usando o mysql.Vai pelo LOAD DATA que é sucesso!
eu vi que no simples usa <load data infile 'arquivo' into table 'nome_tabela'>
mais não é tão simples assim
GOSTEI 0
Renato Neto
18/02/2020
você faz diretamente pelo banco de dados ou usa algum programa pra efetuar essa carga de dados?
nesse caso direto sgbd, que hoje estou usando o mysql.Vai pelo LOAD DATA que é sucesso!
eu vi que no simples usa <load data infile 'arquivo' into table 'nome_tabela'>
mais não é tão simples assim
Estou insitindo para você usar o utilitário, pois ele é muito rápido e eficiente. Para ter sucesso, faça da seguinte maneira.
Crie uma tabela com a mesma estrutura do seu arquivo, tamanho dos caracteres, o tipo pode deixar como VARCHAR, mesmo para coluna que deveria guardar tipos numéricos, pensa nessa tabela como um ambiente de staging, ou seja, é a forma viável de você colocar os dados externos para dentro do banco.
Quanto a sintaxe, vai depender do conteúdo e extensão do seu arquivo. Note que no exemplo que eu lhe passei anteriormente, ele usa um csv, pode ser que funcione com txt também, teria que testar. Em relação aos parametros, na documentação ele especifica, se o arquivo tem algum sufixo, quais são os separadores entre os dados. Sim, é meio chatinho mesmo, mas você acertando isso você abre caminhos e alivia a sua vida. Então vale a pena o esforço.
Qualquer coisa, passe mais informações sobre o arquivo que você está querendo manipular que tento lhe ajudar com o comando.
GOSTEI 1
Djacy Neto
18/02/2020
você faz diretamente pelo banco de dados ou usa algum programa pra efetuar essa carga de dados?
nesse caso direto sgbd, que hoje estou usando o mysql.Vai pelo LOAD DATA que é sucesso!
eu vi que no simples usa <load data infile 'arquivo' into table 'nome_tabela'>
mais não é tão simples assim
Estou insitindo para você usar o utilitário, pois ele é muito rápido e eficiente. Para ter sucesso, faça da seguinte maneira.
Crie uma tabela com a mesma estrutura do seu arquivo, tamanho dos caracteres, o tipo pode deixar como VARCHAR, mesmo para coluna que deveria guardar tipos numéricos, pensa nessa tabela como um ambiente de staging, ou seja, é a forma viável de você colocar os dados externos para dentro do banco.
Quanto a sintaxe, vai depender do conteúdo e extensão do seu arquivo. Note que no exemplo que eu lhe passei anteriormente, ele usa um csv, pode ser que funcione com txt também, teria que testar. Em relação aos parametros, na documentação ele especifica, se o arquivo tem algum sufixo, quais são os separadores entre os dados. Sim, é meio chatinho mesmo, mas você acertando isso você abre caminhos e alivia a sua vida. Então vale a pena o esforço.
Qualquer coisa, passe mais informações sobre o arquivo que você está querendo manipular que tento lhe ajudar com o comando.
acho que estou fazendo errado,
esta retornando:
Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
isso quando eu usei isso:
LOAD DATA
INFILE 'P:/MACRO P CONVERSÃO/teste.csv'
into table janeiro_d8e quando uso que voce passou alterando apenas nome arquivo e tabela retorna isso:
Erro Code 1064. You have an error in your sql syntax.....
GOSTEI 0
Renato Neto
18/02/2020
Tente algum desses links:
https://dba.stackexchange.com/questions/57996/syntax-error-in-load-data-infile
https://dba.stackexchange.com/questions/249637/mysql-load-data-infile-error-1064
https://stackoverflow.com/questions/29412668/load-data-local-infile-1064-error-due-to-file-header-info
https://ifelse.info/questions/33323/why-does-mysql-workbench-always-throw-me-error-when-i-synchr
Como lhe informei, ele é meio chato de ajustar mesmo. Questão de delimitador, separador, espaços (não utilize espaço no nome do arquivo), acentuação, aspas/apóstrofe.
Eu fiz isso com o postgreSQL e demorei até ajustar a sintaxe.
https://dba.stackexchange.com/questions/57996/syntax-error-in-load-data-infile
https://dba.stackexchange.com/questions/249637/mysql-load-data-infile-error-1064
https://stackoverflow.com/questions/29412668/load-data-local-infile-1064-error-due-to-file-header-info
https://ifelse.info/questions/33323/why-does-mysql-workbench-always-throw-me-error-when-i-synchr
Como lhe informei, ele é meio chato de ajustar mesmo. Questão de delimitador, separador, espaços (não utilize espaço no nome do arquivo), acentuação, aspas/apóstrofe.
Eu fiz isso com o postgreSQL e demorei até ajustar a sintaxe.
GOSTEI 0
Djacy Neto
18/02/2020
Tente algum desses links:
https://dba.stackexchange.com/questions/57996/syntax-error-in-load-data-infile
https://dba.stackexchange.com/questions/249637/mysql-load-data-infile-error-1064
https://stackoverflow.com/questions/29412668/load-data-local-infile-1064-error-due-to-file-header-info
https://ifelse.info/questions/33323/why-does-mysql-workbench-always-throw-me-error-when-i-synchr
Como lhe informei, ele é meio chato de ajustar mesmo. Questão de delimitador, separador, espaços (não utilize espaço no nome do arquivo), acentuação, aspas/apóstrofe.
Eu fiz isso com o postgreSQL e demorei até ajustar a sintaxe.
https://dba.stackexchange.com/questions/57996/syntax-error-in-load-data-infile
https://dba.stackexchange.com/questions/249637/mysql-load-data-infile-error-1064
https://stackoverflow.com/questions/29412668/load-data-local-infile-1064-error-due-to-file-header-info
https://ifelse.info/questions/33323/why-does-mysql-workbench-always-throw-me-error-when-i-synchr
Como lhe informei, ele é meio chato de ajustar mesmo. Questão de delimitador, separador, espaços (não utilize espaço no nome do arquivo), acentuação, aspas/apóstrofe.
Eu fiz isso com o postgreSQL e demorei até ajustar a sintaxe.
estou vendo aqui, mesmo assim vou ter trabalho pq os meus arquivos estao em txt, todos artigos vejo importação com csv...
GOSTEI 0
Djacy Neto
18/02/2020
Tente algum desses links:
https://dba.stackexchange.com/questions/57996/syntax-error-in-load-data-infile
https://dba.stackexchange.com/questions/249637/mysql-load-data-infile-error-1064
https://stackoverflow.com/questions/29412668/load-data-local-infile-1064-error-due-to-file-header-info
https://ifelse.info/questions/33323/why-does-mysql-workbench-always-throw-me-error-when-i-synchr
Como lhe informei, ele é meio chato de ajustar mesmo. Questão de delimitador, separador, espaços (não utilize espaço no nome do arquivo), acentuação, aspas/apóstrofe.
Eu fiz isso com o postgreSQL e demorei até ajustar a sintaxe.
https://dba.stackexchange.com/questions/57996/syntax-error-in-load-data-infile
https://dba.stackexchange.com/questions/249637/mysql-load-data-infile-error-1064
https://stackoverflow.com/questions/29412668/load-data-local-infile-1064-error-due-to-file-header-info
https://ifelse.info/questions/33323/why-does-mysql-workbench-always-throw-me-error-when-i-synchr
Como lhe informei, ele é meio chato de ajustar mesmo. Questão de delimitador, separador, espaços (não utilize espaço no nome do arquivo), acentuação, aspas/apóstrofe.
Eu fiz isso com o postgreSQL e demorei até ajustar a sintaxe.
Eu fiz uma tabela de teste com 3 linhas e duas colunas e coloquei p importar um csv no mesmo formato.
ai deu codigo 1148: The used command is not allowed with this My SQL version...
será que essa aplicação só roda na versao paga?
GOSTEI 0