Guia de Importação MySQL: Importe Dumps SQL e CSV Rapidamente (LOAD DATA, Workbench, phpMyAdmin)

目次

1. O que você será capaz de fazer neste artigo

Muitas pessoas que buscam “importação de dados MySQL” estão em uma situação em que desejam:

  • “restaurar um arquivo .sql”
  • “importar um CSV”
  • “ele para com um erro”
  • “não funciona no Workbench ou phpMyAdmin”

Em outras palavras, você quer uma solução que possa aplicar agora mesmo.

Primeiro, aqui estão os caminhos de “sucesso” mais curtos por objetivo.

🔹 Comando mais rápido para importar um arquivo SQL (.sql)

Para restaurações de backup ou migração de servidor, este é o mais rápido.

mysql -u username -p database_name < backup.sql

Coisas a verificar antes

  • O banco de dados de destino existe?
  • O usuário de conexão tem privilégios para o banco de dados alvo?
  • A codificação do arquivo SQL (geralmente UTF-8)

Se o banco de dados ainda não foi criado:

CREATE DATABASE example_db;

🔹 Forma mais rápida de importar um arquivo CSV (recomendado)

Para importar grandes volumes de dados rapidamente, LOAD DATA é ideal.

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, name, @age)
SET age = NULLIF(@age,'');

Pontos principais

  • Quebras de linha do Windows → '\r\n'
  • Se houver uma linha de cabeçalho → IGNORE 1 LINES
  • Converter strings vazias para NULL → NULLIF()
  • Muitos ambientes exigem LOCAL (explicado mais adiante)

🔹 Se você quiser importar via GUI

MySQL Workbench

  • Servidor → Importação de Dados → selecionar um arquivo → executar

phpMyAdmin

  • Selecionar o DB alvo → Importar → escolher um arquivo → executar

⚠ No entanto, para arquivos grandes e tratamento de erros confiável, a CLI (linha de comando) é mais confiável.

🔹 3 itens que você deve verificar antes de importar

1. Conjunto de caracteres (mais importante)

SHOW VARIABLES LIKE 'character_set%';

Recomendado: utf8mb4

2. Configurações que causam erros relacionados ao INFILE

SHOW VARIABLES LIKE 'local_infile';
SHOW VARIABLES LIKE 'secure_file_priv';

3. Verificação de privilégios

SHOW GRANTS FOR 'user'@'localhost';

✔ O que vem a seguir neste artigo

  • Maneiras detalhadas de importar arquivos SQL
  • Técnicas práticas de importação de CSV
  • Uma explicação completa de por que o INFILE falha
  • Correções mais rápidas por tipo de erro
  • Técnicas do mundo real para grandes conjuntos de dados

MySQL data import workflow diagram showing SQL file, CSV file, LOAD DATA LOCAL INFILE, mysql command, and MySQL server process

2. Tipos de importações MySQL e quando usar cada uma

Existem várias maneiras de importar para o MySQL, mas a melhor escolha depende do seu caso de uso.
Se você entender isso corretamente, pode evitar problemas desnecessários.

2.1 Quando importar um dump SQL (.sql)

Casos de uso comuns

  • Restaurar a partir de um backup
  • Migração de servidor
  • Aplicar dados semelhantes a produção em um ambiente de desenvolvimento
  • Reimportar dados exportados com mysqldump

Recursos

  • Restaura toda a estrutura da tabela + dados
  • Alta reproducibilidade
  • Pode incluir transações
  • Geralmente a opção mais segura

Métodos típicos

mysql -u user -p dbname < dump.sql

Ou dentro do MySQL:

SOURCE /path/to/dump.sql;

Melhor para

  • Restauração completa de um DB existente
  • Reconstrução de um ambiente de produção
  • Carregamento de dados para ambientes CI/CD

2.2 Quando importar CSV / TSV

Casos de uso comuns

  • Receber dados de sistemas externos
  • Importar dados do Excel
  • Processamento ETL
  • Atualizar apenas tabelas específicas

Recursos

  • Carrega apenas os dados (esquema deve existir separadamente)
  • Rápido (LOAD DATA é extremamente rápido)
  • Permite lógica de transformação durante a importação

Método típico

LOAD DATA LOCAL INFILE 'file.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

Melhor para

  • Jobs batch agendados
  • Integração de dados
  • Ingestão de alta velocidade de grandes quantidades de linhas

2.3 Quando usar ferramentas GUI

Ferramentas comuns:

  • MySQL Workbench
  • phpMyAdmin

Recursos

  • Operação intuitiva
  • Amigável para iniciantes
  • Adequado para pequenos conjuntos de dados

Atenções

  • Limites de upload (phpMyAdmin)
  • Timeouts
  • Instável com grandes volumes de dados
  • Mais difícil analisar erros

2.4 Comparação por método (ponto de vista prático)

MethodSpeedStabilityLarge-file supportError analysisRecommendation
mysql command★★★★★
LOAD DATA★★★★★
Workbench★★★
phpMyAdmin×★★

✔ Escolhas recomendadas no trabalho real

  • Restauração de backup → comando mysql
  • Importação de CSV de alta velocidade → LOAD DATA LOCAL INFILE
  • Tarefas pequenas, de uma só vez → GUI

Se você não tiver certeza, escolher o CLI (linha de comando) é a opção mais estável.

3. Importando um Arquivo SQL (O Caminho Mais Rápido para o Sucesso)

Importar um arquivo .sql é o método mais comum para restaurações de backup e migrações de servidor.
Aqui, o objetivo é “ter sucesso o mais rápido possível”, então focaremos apenas nos passos práticos usados no trabalho real.

3.1 Restauração em uma linha (o método mais comum)

Este é o método mais confiável e rápido.

mysql -u username -p database_name < backup.sql

Após executá-lo, você será solicitado a inserir a senha.

✔ Pré-verificações (para prevenir falhas)

① O banco de dados existe?
SHOW DATABASES;

Se não existir:

CREATE DATABASE example_db;
② O usuário tem privilégios?
SHOW GRANTS FOR 'user'@'localhost';

Se privilégios estiverem ausentes:

GRANT ALL PRIVILEGES ON example_db.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
③ Codificação do arquivo

Normalmente é UTF-8.
Se você vir caracteres corrompidos, especifique explicitamente.

mysql --default-character-set=utf8mb4 -u user -p dbname < backup.sql

3.2 Executar de dentro do MySQL (comando SOURCE)

Este método é executado após você fazer login no MySQL.

mysql -u user -p
USE example_db;
SOURCE /path/to/backup.sql;

Quando é útil

  • Quando você quer executar apenas parte de um arquivo SQL
  • Quando você quer identificar a localização exata do erro
  • Quando você quer confirmar visualmente o log de execução

3.3 Falhas comuns e correções

❌ ERRO 1049: Banco de dados desconhecido

→ O BD não existe
→ Execute CREATE DATABASE

❌ ERRO 1045: Acesso negado

→ Privilégios insuficientes
→ Verifique com SHOW GRANTS

❌ Para no meio / localização do erro é incerta

Correção:

  1. Verifique o início e o fim do arquivo
    head backup.sql
    tail backup.sql
    
  1. Verifique as linhas logo antes do erro
  2. Se o arquivo for grande, divida e execute em partes
    split -l 10000 backup.sql part_
    

3.4 Dicas para estabilizar importações grandes de SQL

① Verifique as configurações de transação

Veja se SET autocommit=0; está incluído

② Se restrições de chave estrangeira forem o problema

SET FOREIGN_KEY_CHECKS=0;
-- import
SET FOREIGN_KEY_CHECKS=1;

③ Verifique o modo SQL

SELECT @@sql_mode;

O modo estrito pode estar afetando a importação.

✔ Recomendações práticas

  • Restauração de produção → comando mysql
  • Depuração → SOURCE
  • Arquivos grandes → CLI + considere dividir

4. Importação de CSV (Mais Importante: Mais Rápido com LOAD DATA)

Ao importar dados CSV, o método mais rápido e prático é LOAD DATA.
Para conjuntos de dados grandes, é esmagadoramente mais rápido que instruções INSERT.

Aqui, forneceremos o formato correto “copie e cole para executar” e destacaremos pontos de falha comuns.

4.1 Primeiro: Pré-requisitos do CSV

Antes de importar, certifique-se de verificar o seguinte.

✔ Delimitador

  • Vírgula ,
  • Tab \t
  • Ponto e vírgula ; (comum em dados estrangeiros)

✔ Caractere de aspas

  • Se os valores estão entre aspas como "valor" com aspas duplas

✔ Finais de linha

  • Linux / Mac → \n
  • Windows → \r\n

✔ Conjunto de caracteres / codificação

  • Recomendado: utf8mb4
  • CSV criado no Windows pode ser Shift-JIS
  • UTF-8 com BOM pode causar erros às vezes

Exemplo de verificação:

file -i example.csv

4.2 Forma básica pronta para copiar e colar (CSV com cabeçalho)

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, name, @age)
SET age = NULLIF(@age,'');

Significado de cada opção

  • LOCAL Lê um arquivo do lado do cliente (necessário em muitos ambientes)
  • IGNORE 1 LINES Ignora a linha de cabeçalho
  • @age Uma variável temporária usada para transformar o valor antes de armazená‑lo
  • NULLIF() Converte strings vazias para NULL

4.3 Importe apenas as colunas que você precisa

Se o CSV tem colunas desnecessárias:

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, @dummy, age);

Mapeie colunas indesejadas para @dummy.

4.4 Converta datas e tipos durante a importação

Exemplo: converta MM/DD/YYYY → formato MySQL

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(@date_col, name)
SET date_col = STR_TO_DATE(@date_col, '%m/%d/%Y');

4.5 Para arquivos delimitados por tabulação (TSV)

FIELDS TERMINATED BY '\t'

4.6 Melhore ainda mais o desempenho (para grandes volumes de dados)

Desativar índices temporariamente

ALTER TABLE example_table DISABLE KEYS;
-- Run LOAD DATA
ALTER TABLE example_table ENABLE KEYS;

Desativar chaves estrangeiras temporariamente

SET FOREIGN_KEY_CHECKS=0;
-- Run LOAD DATA
SET FOREIGN_KEY_CHECKS=1;

Por que LOCAL costuma ser necessário

  • LOAD DATA INFILE → lê um arquivo no lado do servidor
  • LOAD DATA LOCAL INFILE → lê um arquivo no lado do cliente

Em muitos ambientes, usar LOCAL tem uma taxa de sucesso maior.

✔ Forma prática recomendada

Na maioria dos casos:

LOAD DATA LOCAL INFILE
+ explicit delimiter
+ explicit line endings
+ IGNORE 1 LINES
+ type conversion

Esta é a abordagem mais estável.

5. Principais 4 Motivos pelos quais INFILE Falha (Seção Mais Importante)

A maioria das falhas de LOAD DATA INFILE são causadas por configurações, privilégios ou má compreensão da localização da fonte.
Se você entender isso, pode resolver a maioria dos erros imediatamente.

5.1 Diferença entre INFILE e LOCAL INFILE

Este é o conceito básico fundamental.

CommandWhere it reads fromTypical use
LOAD DATA INFILEFile on the serverA fixed path on the server
LOAD DATA LOCAL INFILEFile on the clientA CSV on your local PC

Mal-entendidos comuns

  • Tentando ler um arquivo local do PC com INFILE e falhando
  • O arquivo não existe no servidor

✔ Regra prática rápida

  • CSV no seu próprio PC → LOCAL
  • CSV colocado no servidor → INFILE

Se estiver em dúvida, usar LOCAL é a escolha mais segura.

5.2 local_infile está desativado (causa do ERRO 1148)

Erro de exemplo:

ERROR 1148 (42000): The used command is not allowed with this MySQL version

Causa:

local_infile está DESATIVADO

✔ Verifique a configuração atual

SHOW VARIABLES LIKE 'local_infile';

✔ Habilite ao conectar (lado do cliente)

mysql --local-infile=1 -u user -p

✔ Habilite permanentemente (arquivo de configuração)

Adicione ao my.cnf ou my.ini:

[mysqld]
local_infile=1

É necessário reiniciar o servidor.

5.3 Restrição secure_file_priv

Isso ocorre ao usar LOAD DATA INFILE (sem LOCAL).

Verifique:

SHOW VARIABLES LIKE 'secure_file_priv';

Exemplo de saída

/var/lib/mysql-files/

→ Você só pode ler arquivos dentro deste diretório.

✔ Correção

  • Mova o CSV para o diretório permitido
  • Ou use LOCAL

5.4 Privilégios insuficientes (privilégio FILE / permissões do SO)

Erro de exemplo:

ERROR 1045: Access denied

Verifique:

SHOW GRANTS FOR 'user'@'localhost';

✔ Privilégio necessário

GRANT FILE ON *.* TO 'user'@'localhost';

※ Por segurança, opere com o mínimo de privilégios possível.

5.5 Especificação de caminho incorreta

  • Use um caminho absoluto, não um caminho relativo
  • No Windows, recomenda‑se C:/path/file.csv
  • Barras normais (/) são mais seguras que barras invertidas ()

✔ Fluxo rápido de solução de problemas para questões de INFILE

  1. Você adicionou LOCAL ?
  2. SHOW VARIABLES LIKE 'local_infile';
  3. SHOW VARIABLES LIKE 'secure_file_priv';
  4. Verifique os privilégios (SHOW GRANTS)
  5. Verifique o caminho (caminho absoluto)

Nessa ordem, você pode resolver a maioria dos casos.

6. Importação via GUI (Workbench / phpMyAdmin)

A linha de comando é a mais estável, mas há situações em que você deseja usar ferramentas GUI.
Aqui, vamos nos concentrar nos pontos comuns onde as pessoas ficam presas no trabalho real.

6.1 Importar com MySQL Workbench

Importar um arquivo SQL (restauração de backup)

  1. Inicie o Workbench
  2. Menu → Server → Data Import
  3. Selecione “Import from Self-Contained File”
  4. Selecione o arquivo .sql
  5. Selecione o Schema de Destino (banco de dados)
  6. Clique em “Start Import”

Importar CSV (por tabela)

  1. Clique com o botão direito na tabela de destino
  2. Selecione Table Data Import Wizard
  3. Selecione o arquivo CSV
  4. Defina o delimitador e se há cabeçalho
  5. Execute

⚠ Razões comuns para o Workbench travar

  • Arquivos grandes (centenas de MB ou mais)
  • Timeouts
  • Incompatibilidade de codificação
  • Restrições secure_file_priv

👉 Para arquivos grandes ou ambientes de produção, a CLI é recomendada.

6.2 Importar com phpMyAdmin

Passos

  1. Selecione o banco de dados de destino
  2. Abra a aba “Import”
  3. Escolha um arquivo
  4. Selecione o formato (SQL / CSV)
  5. Execute

⚠ Limitações do phpMyAdmin

① Limite de tamanho de upload

upload_max_filesize
post_max_size

Arquivos grandes falharão.

② Timeout
max_execution_time

Importações de longa duração podem parar no meio.

③ Falta de memória
memory_limit

6.3 Quando você deve usar GUI

  • Conjuntos de dados pequenos (alguns MB)
  • Ambientes de desenvolvimento
  • Trabalho temporário pontual

6.4 Quando você deve usar CLI (recomendado)

  • Ambientes de produção
  • Dezenas de MB ou mais
  • Importações de CSV grandes
  • Quando precisar de análise de erros
  • Migrações servidor a servidor

✔ Conclusão prática

GUI é “fácil”, mas
CLI é incomparavelmente melhor para estabilidade, reproducibilidade e manipulação de arquivos grandes.

Para solução de problemas, aprender operações de CLI é, em última análise, recomendado.

7. Solução de Problemas (Por Erro: Causa → Correção Mais Rápida)

A maioria dos erros de importação do MySQL são altamente padronizados.
Aqui, organizaremos eles na ordem “causa → primeira ação → comando de verificação.”

7.1 ERRO 1148 (42000)

O comando usado não é permitido nesta versão do MySQL

🔎 Causa

  • LOAD DATA LOCAL INFILE está desativado
  • local_infile está OFF

✅ Correção mais rápida

① Verifique as configurações atuais

SHOW VARIABLES LIKE 'local_infile';

② Habilite ao conectar (lado do cliente)

mysql --local-infile=1 -u user -p

③ Habilite permanentemente (se necessário)

[mysqld]
local_infile=1

→ Reinicie o MySQL

7.2 ERRO 1366

Valor de string incorreto

🔎 Causa

  • Incompatibilidade de codificação
  • Inconsistência entre utf8 e utf8mb4
  • Shift-JIS misturado

✅ Correção mais rápida

① Verifique o conjunto de caracteres atual

SHOW VARIABLES LIKE 'character_set%';

② Converta a tabela para utf8mb4

ALTER TABLE example_table CONVERT TO CHARACTER SET utf8mb4;

③ Especifique explicitamente no momento da importação

mysql --default-character-set=utf8mb4 -u user -p db < file.sql

7.3 ERRO 1062

Entrada duplicada

🔎 Causa

  • Chaves primárias duplicadas
  • Violação de restrição UNIQUE

✅ Opções de correção

Opção 1: Ignorar duplicatas
LOAD DATA LOCAL INFILE 'file.csv'
INTO TABLE example_table
IGNORE;
Opção 2: Atualizar em duplicata
INSERT INTO example_table (id, name)
VALUES (1,'John')
ON DUPLICATE KEY UPDATE name=VALUES(name);
Opção 3: Usar uma tabela de staging
CREATE TEMPORARY TABLE temp LIKE example_table;
-- LOAD into temp first
INSERT INTO example_table
SELECT * FROM temp;

7.4 ERRO 1045

Acesso negado para o usuário

🔎 Causa

  • Privilégios insuficientes no DB
  • Privilégio FILE insuficiente
  • Permissões de SO insuficientes para o caminho

✅ Verificar

SHOW GRANTS FOR 'user'@'localhost';

✅ Exemplo de privilégios necessários

GRANT ALL PRIVILEGES ON example_db.* TO 'user'@'localhost';
FLUSH PRIVILEGES;

※ Tenha cautela ao conceder o privilégio FILE.

7.5 Ele para no meio em arquivos grandes

🔎 Causa

  • Tempo limite
  • Falta de memória
  • Limites do PHP (phpMyAdmin)

✅ Medidas corretivas mais rápidas

Aumentar tempos limite
SET GLOBAL net_read_timeout=600;
SET GLOBAL net_write_timeout=600;
Dividir o arquivo
split -l 100000 large.csv part_

✔ Fluxo de resolução de erros (mais rápido)

  1. Verificar codificação
  2. Verificar local_infile
  3. Verificar secure_file_priv
  4. Verificar privilégios
  5. Verificar terminações de linha ( \n / \r\n )

Nessa ordem, você pode resolver a maioria dos problemas.

8. Técnicas do Mundo Real para Grandes Conjuntos de Dados (Operações à Prova de Falhas)

Ao importar centenas de milhares a milhões de linhas,
os métodos habituais podem ser lentos, parar ou falhar.

Aqui estão técnicas estáveis comumente usadas em produção.

8.1 Dividir o arquivo e importar em etapas

Alimentar um CSV/SQL enorme de uma só vez pode causar problemas de memória e tempo limite.

✔ Linux / Mac

split -l 100000 large.csv part_

→ Dividir em 100.000 linhas por parte

✔ Windows (exemplo PowerShell)

Get-Content large.csv -TotalCount 100000 > part_1.csv

✔ Benefícios das importações em etapas

  • Mais fácil de tentar novamente após uma falha parcial
  • Mais fácil de identificar a localização do erro
  • Carga do servidor mais estável

8.2 Desativar temporariamente índices e chaves estrangeiras

Durante a importação, as atualizações de índices frequentemente se tornam o gargalo.

✔ Desativar temporariamente índices

ALTER TABLE example_table DISABLE KEYS;
-- LOAD DATA
ALTER TABLE example_table ENABLE KEYS;

※ Principalmente para MyISAM. Efeito limitado para InnoDB.

✔ Desativar chaves estrangeiras

SET FOREIGN_KEY_CHECKS=0;
-- import
SET FOREIGN_KEY_CHECKS=1;

8.3 Controlar autocommit (aceleração)

SET autocommit=0;
-- LOAD DATA
COMMIT;
SET autocommit=1;

8.4 Configurações recomendadas para carregamentos em massa

SET UNIQUE_CHECKS=0;
SET FOREIGN_KEY_CHECKS=0;
SET AUTOCOMMIT=0;

Após a importação:

COMMIT;
SET UNIQUE_CHECKS=1;
SET FOREIGN_KEY_CHECKS=1;
SET AUTOCOMMIT=1;

⚠ Use com cuidado em produção.

8.5 Aumentar tempos limite

SET GLOBAL net_read_timeout=600;
SET GLOBAL net_write_timeout=600;

8.6 Estratégia de tabela de preparação (operações seguras)

Em vez de importar diretamente para a tabela de produção, use primeiro uma tabela de validação.

CREATE TABLE staging LIKE example_table;
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE staging;

Após a validação:

INSERT INTO example_table
SELECT * FROM staging;

✔ Padrão do mundo real mais estável

  1. Carregar em uma tabela de preparação
  2. Verificar contagem de linhas
  3. Validar restrições
  4. Aplicar à produção
  5. Salvar logs

✔ Conclusão para grandes volumes de dados

  • Use a CLI sempre que possível
  • Divida as importações
  • Passe pela preparação
  • Desative temporariamente as restrições
  • Verifique os logs

Isso manterá as importações estáveis mesmo com milhões de linhas.

9. FAQ (Perguntas Frequentes)

Aqui estão respostas rápidas e práticas para perguntas frequentes sobre importação no MySQL.

Q1. Posso importar apenas colunas específicas de um CSV?

Sim, você pode.

Você pode mapear colunas desnecessárias para uma variável (como @dummy) e ignorá‑las.

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, @dummy, age);

Se você quiser apenas certas colunas, certifique‑se de especificar explicitamente a ordem das colunas.

Q2. Como tratar células vazias como NULL?

Use NULLIF().

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(name, @age)
SET age = NULLIF(@age,'');

Isso converte strings vazias (”) para NULL.

Q3. Como pular a linha de cabeçalho?

IGNORE 1 LINES

Exemplo:

LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

Q4. Como validar os resultados da importação?

✔ Verificar contagem de linhas

SELECT COUNT(*) FROM example_table;

✔ Verificar avisos/erros

Verifique os avisos do MySQL:

SHOW WARNINGS;

✔ Estratégia de tabela de staging (recomendado)

Carregue primeiro em uma tabela de staging e, em seguida, aplique na produção.

Q5. Qual método é o mais rápido?

Conclusão:

  • CSV → LOAD DATA LOCAL INFILE (mais rápido)
  • Restaurar backup → comando mysql

A GUI é conveniente, mas CLI vence em velocidade e estabilidade.

Q6. Recebo um erro de final de linha no Windows

É devido aos finais de linha.

Windows:

LINES TERMINATED BY '\r\n'

Linux / Mac:

LINES TERMINATED BY '\n'

Q7. Recebo um erro secure_file_priv

Check:

SHOW VARIABLES LIKE 'secure_file_priv';

Fix:

  • Coloque o CSV no diretório permitido
  • Ou use LOCAL

✔ Resumo de FAQ

  • Mapeamento de coluna → @dummy
  • Conversão de NULL → NULLIF
  • Ignorar cabeçalho → IGNORE 1 LINES
  • Importação em alta velocidade → LOAD DATA
  • Principais pontos “travados” → local_infile / secure_file_priv / codificação

10. Resumo

As importações MySQL podem parecer complexas a princípio, mas uma vez organizadas por objetivo, são muito simples.

Vamos recapitular os caminhos de sucesso mais curtos.

✔ Restaurar um arquivo SQL (.sql)

Mais rápido e estável:

mysql -u user -p dbname < backup.sql
  • Verifique se o banco de dados existe
  • Verifique privilégios
  • Recomende utf8mb4 para codificação

✔ Importar CSV (rápido)

Forma básica:

LOAD DATA LOCAL INFILE '/path/to/file.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

Pontos chave:

  • Finais de linha do Windows → \r\n
  • Strings vazias → NULLIF()
  • Se falhar, verifique local_infile

✔ Ordem de verificação de solução de problemas

  1. Codificação (recomenda utf8mb4)
  2. SHOW VARIABLES LIKE 'local_infile';
  3. SHOW VARIABLES LIKE 'secure_file_priv';
  4. Privilégios (SHOW GRANTS)
  5. Finais de linha

Nessa ordem, você pode resolver a maioria dos problemas.

✔ Regras de ouro para grandes conjuntos de dados

  • Use CLI
  • Divida as importações
  • Passe por uma tabela de staging
  • Desative temporariamente chaves estrangeiras/restrições
  • Verifique logs

✔ Conclusão final

  • Restaurar backup → comando mysql
  • Importação CSV em alta velocidade → LOAD DATA LOCAL INFILE
  • Tarefas pontuais pequenas → GUI

Se estiver em dúvida, usar a CLI é a escolha mais estável.

Com isso, você agora tem um conjunto completo de conhecimento para importações MySQL.

Experimente em seu ambiente e construa um fluxo de trabalho operacional estável.