- 1 1. O que você será capaz de fazer neste artigo
- 2 2. Tipos de importações MySQL e quando usar cada uma
- 3 3. Importando um Arquivo SQL (O Caminho Mais Rápido para o Sucesso)
- 4 4. Importação de CSV (Mais Importante: Mais Rápido com LOAD DATA)
- 4.1 4.1 Primeiro: Pré-requisitos do CSV
- 4.2 4.2 Forma básica pronta para copiar e colar (CSV com cabeçalho)
- 4.3 4.3 Importe apenas as colunas que você precisa
- 4.4 4.4 Converta datas e tipos durante a importação
- 4.5 4.5 Para arquivos delimitados por tabulação (TSV)
- 4.6 4.6 Melhore ainda mais o desempenho (para grandes volumes de dados)
- 4.7 ✔ Forma prática recomendada
- 5 5. Principais 4 Motivos pelos quais INFILE Falha (Seção Mais Importante)
- 5.1 5.1 Diferença entre INFILE e LOCAL INFILE
- 5.2 5.2 local_infile está desativado (causa do ERRO 1148)
- 5.3 5.3 Restrição secure_file_priv
- 5.4 5.4 Privilégios insuficientes (privilégio FILE / permissões do SO)
- 5.5 5.5 Especificação de caminho incorreta
- 5.6 ✔ Fluxo rápido de solução de problemas para questões de INFILE
- 6 6. Importação via GUI (Workbench / phpMyAdmin)
- 7 7. Solução de Problemas (Por Erro: Causa → Correção Mais Rápida)
- 8 8. Técnicas do Mundo Real para Grandes Conjuntos de Dados (Operações à Prova de Falhas)
- 8.1 8.1 Dividir o arquivo e importar em etapas
- 8.2 8.2 Desativar temporariamente índices e chaves estrangeiras
- 8.3 8.3 Controlar autocommit (aceleração)
- 8.4 8.4 Configurações recomendadas para carregamentos em massa
- 8.5 8.5 Aumentar tempos limite
- 8.6 8.6 Estratégia de tabela de preparação (operações seguras)
- 8.7 ✔ Padrão do mundo real mais estável
- 8.8 ✔ Conclusão para grandes volumes de dados
- 9 9. FAQ (Perguntas Frequentes)
- 9.1 Q1. Posso importar apenas colunas específicas de um CSV?
- 9.2 Q2. Como tratar células vazias como NULL?
- 9.3 Q3. Como pular a linha de cabeçalho?
- 9.4 Q4. Como validar os resultados da importação?
- 9.5 Q5. Qual método é o mais rápido?
- 9.6 Q6. Recebo um erro de final de linha no Windows
- 9.7 Q7. Recebo um erro secure_file_priv
- 9.8 ✔ Resumo de FAQ
- 10 10. Resumo
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

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)
| Method | Speed | Stability | Large-file support | Error analysis | Recommendation |
|---|---|---|---|---|---|
| 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:
- Verifique o início e o fim do arquivo
head backup.sql tail backup.sql
- Verifique as linhas logo antes do erro
- 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
LOCALLê um arquivo do lado do cliente (necessário em muitos ambientes)IGNORE 1 LINESIgnora a linha de cabeçalho@ageUma variável temporária usada para transformar o valor antes de armazená‑loNULLIF()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 servidorLOAD 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.
| Command | Where it reads from | Typical use |
|---|---|---|
LOAD DATA INFILE | File on the server | A fixed path on the server |
LOAD DATA LOCAL INFILE | File on the client | A CSV on your local PC |
Mal-entendidos comuns
- Tentando ler um arquivo local do PC com
INFILEe 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
- Você adicionou
LOCAL? SHOW VARIABLES LIKE 'local_infile';SHOW VARIABLES LIKE 'secure_file_priv';- Verifique os privilégios (SHOW GRANTS)
- 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)
- Inicie o Workbench
- Menu → Server → Data Import
- Selecione “Import from Self-Contained File”
- Selecione o arquivo
.sql - Selecione o Schema de Destino (banco de dados)
- Clique em “Start Import”
Importar CSV (por tabela)
- Clique com o botão direito na tabela de destino
- Selecione Table Data Import Wizard
- Selecione o arquivo CSV
- Defina o delimitador e se há cabeçalho
- 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
- Selecione o banco de dados de destino
- Abra a aba “Import”
- Escolha um arquivo
- Selecione o formato (SQL / CSV)
- Execute
⚠ Limitações do phpMyAdmin
① Limite de tamanho de upload
upload_max_filesize
post_max_size
Arquivos grandes falharão.
② Timeout
max_execution_timeImportações de longa duração podem parar no meio.
③ Falta de memória
memory_limit6.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 INFILEestá desativadolocal_infileestá 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)
- Verificar codificação
- Verificar
local_infile - Verificar
secure_file_priv - Verificar privilégios
- 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
- Carregar em uma tabela de preparação
- Verificar contagem de linhas
- Validar restrições
- Aplicar à produção
- 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
utf8mb4para 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
- Codificação (recomenda utf8mb4)
SHOW VARIABLES LIKE 'local_infile';SHOW VARIABLES LIKE 'secure_file_priv';- Privilégios (SHOW GRANTS)
- 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.


