7
respostas

MySQL - Erro ao importar .csv

Pessoal bom dia,

Estou tentando importar uma base para fazer uns testes sozinho.

No Microsft SQL eu consegui importar de boa.

Agora queria replicar a mesma coisa no MySQL para poder trabalhar as diferenças de sintaxe e ver qual prefiro. Porém, eu não consigo importar! :(

Mesmo importando e criando tabela nova, ou criando uma tabela previamente, já setando os campos e o tipo de cada campo, sempre da erro. Mesmo trocando o Encoding para qualquer um dos que tem disponível no MySQL, sempre da erro.

Varri a internet final de semana tentando achar uma solução. Tentei editar o my.ini, várias e várias coisas, mas nenhuma deu certo. :(

Aqui está o print do erro: https://ibb.co/Dr3GC14

É um arquivo .csv com quase 200k linhas. Não queria fazer upload porque é do trabalho. Mas qualquer coisa se não der, e alguém se disponibilizar a gente poderia bater um papo via Zoom.

Aqui teria um exemplo de como estão as linhas: https://ibb.co/zJVDmXJ

Alguém consegue me dar uma luz? :((((

7 respostas

Olá Vinicius, tudo bem?

Como não conheço o arquivo que você está utilizando Vinicius, não tenho como afirmar com uma certeza, porém pelo erro retornado, o arquivo usado tem um encoding diferente do selecionado no momento da importação.

  • Qual o encoding do seu arquivo ?
  • Ocorre sempre o mesmo erro, mesmo você selecionando outro encoding?
  • Você já tentou alterar o encoding do seu arquivo para realizar a importação?

Aguardo o seu retorno!

Oi Dani boa noite

Tudo bom e contigo?

Tive uma idéia: pra mascarar os dados dos clientes, alterei varias letras e números. Ai coloquei o arquivo no meu OneDrive, você pode baixar por esse link: https://1drv.ms/u/s!Ao6d-S8lnKgzgYonqEDielnMopkfsA?e=UA6nfq

  1. (Me corrija se estiver errado), mas o que vi aqui é que o formato era CSV, e o encoding UTF-8 (mas se está dando erro, provavelmente eu estou errado kkkk) - assim: https://ibb.co/sKsk5RN
  2. Sim, sempre o mesmo erro com qualquer encoding :(
  3. Até ontem tinha tentado outros encodings. Hoje, depois de ler sua mensagem, eu pensei em outra coisa: e se eu salvar em Excel e depois em outro formato de CSV? (oh eu tentando inventar a roda)

Peguei o csv, transformei de texto para coluna pra separar todos os dados, ai salvei em "CSV Comma delimited" - sem utf-8. Assim: https://ibb.co/tYYr9m3

Já melhorou, porque de cara o MySQL entendeu a separação de colunas (antes com o csv, ele entendia uma linha só, ai eu tinha que ir na 'chave de fenda' e alterar o separador de " para ' (aspas duplas para simples)).

Comecei o upload, sucesso!............... Mentira :(

A barra nunca concluía. Aqui: https://ibb.co/6Pv6tj1

Esse "data import" vai subindo e se repetindo várias vezes... e a barra de progressão em cima, não andava.

Ta certo que são 200k linhas... mas no Microsoft SQL eu importo isso em uns 5 minutos. Eu deixei hoje o MySql rodando por 2 HORAS, e nada da barra de percentual andar. Ai eu cancelei o processo no meio e tinha importado 1k linha só....

Voltei a estaca 0 :(

De qualquer forma, desde já obrigado pelo help :D

Certo Vinicius, você comentou sobre a demora na importação dos dados e que só havia importado 1k após está alteração que você realizou no arquivo. Então, você poderia verificar se um arquivo menor a importação é finalizada? Você pode copiar uma pequena parte dos dados em outro arquivo e realizar este teste?

Oi Dani,

Você faz as perguntas certas e eu me sinto um banana de não ter feito antes kkkkk... mas enfim, vamos em busca de resolver meu mistério

Eu tentei agorinha aqui, 150 linhas, foi instanâneo.

Eu fiz outro corte na tabela, agora com 1500 linhas e também foi em um piscar de olhos.

Então, ta funcionando. O 'problema' seria o tamanho da base mesmo?

Porque o que eu não to entendo agora, é porque no Microsoft SQL eu importo em alguns minutos, e no MySQL ele morre....

(Por curiosidade as 17h05 eu coloquei a base completa pra importar de novo hahahaha... vou deixar mais um tempão de novo rodando pra ver se conclui a importação. Mas de qualquer coisa ainda estou achando esquisito, porque se importar levando muito tempo - ok, mas é inviável usar assim com toda essa lentidão. Agora se não importar, ai de novo, continuamos com problema kkkk)

18h30, parei a importação aqui

Erro 01 - https://ibb.co/mCq7SYC

Erro 02 - https://ibb.co/G2M1249

Depois que cancelei a importação (1h30 depois), foram importadas 14 linhas T_T

E a ordem, é a mesma da base das 150 e 1500 linhas que importei antes...

Certo Vinicius, nestas ultimas imagens que você disponibilizou, o erro retornado foi de incorrect datetime value, ou seja, o valor de data e hora está incorreto. Então Vinicius, aparentemente o MySQL workbench está dando erro devido ao formato dos dados.

  • Todos os dados desde arquivo estão no mesmo formato?
  • Você utilizou o arquivo transformado ou o csv original?

Já pensei em ti sugerir tentar importar por outra ferramenta, porém também não tenho certeza se o processo vai funcionar.

Oi Dani,

Estão sim! Extraio direto do banco de dados.

No começo, eu tinha problema com alguns nomes que tinham ; e quebravam a linha no meio. Exemplo:

  • Data | Nome | Status (1,2,3)
  • 07/06/2021 | Vinicius ;) | 1

Quebrava assim:

  • 07/06/2021 | Vinicius ; | )
  • 1 | null | null <- criava uma linha nova toda bagunçada

Ai nesses casos, sempre que pegava, eu voltava na base, editava o valor la e extraia novamente. Assim pegava uma base 'sem erro'.


Sobre a pergunta 2:

  • se eu tentar o csv original, da erro logo de cara (um dos prints do meu 1°post)
  • o que fiz foi abrir o csv, separar as colunas e salvar como csv 'normal '... sem ser o csv utf8

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software