Um técnico precisa importar 1.000.000 de registros de processos de um grande arquivo CSV de um Ministério Público para uma tabela no MySQL, minimizando o tempo de importação. Nesse caso, a estratégia mais rápida é
Ausar INSERT individual para cada linha do CSV (uma instrução INSERT por registro).
Bler o CSV em PHP (ou outra linguagem de script) e fazer INSERT agrupado, por exemplo, em lotes de 100 registros.
Cimportar via LOAD DATA INFILE (ou usando mysqlimport) apontando diretamente para o arquivo CSV.
Dinserir os dados em uma tabela temporária via INSERT e depois fazer INSERT ... SELECT para mover para a tabela final com índices ativos.
Eexportar o CSV em SQL (transformar cada linha em INSERT no arquivo .sql) e importar o .sql via phpMyAdmin.
Revelar gabarito e comentário▾
GabaritoC — importar via LOAD DATA INFILE (ou usando mysqlimport) apontando diretamente para o arquivo CSV.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Importação de dados em massa no MySQL
Gabarito: letra C. Para importar 1.000.000 de registros de um CSV no MySQL com o menor tempo possível, a ferramenta nativa LOAD DATA INFILE (ou o utilitário mysqlimport, que a utiliza internamente) é a estratégia mais rápida, pois lê o arquivo diretamente no servidor, em operação de baixo nível, sem passar pela camada de interpretação SQL de cada INSERT. As demais alternativas dependem de gerar e executar instruções SQL individuais ou em lotes, o que é significativamente mais lento para volumes dessa magnitude.
O problema central é a diferença entre importar dados e executar comandos SQL. Quando você usa INSERT, cada linha (ou lote) passa pelo parser SQL, pela verificação de privilégios, pela geração do plano de execução e pela escrita no log de transações — tudo isso com overhead por instrução. O LOAD DATA INFILE contorna esse caminho: o servidor lê o arquivo diretamente do sistema de arquivos, faz o parsing do CSV de forma otimizada e insere os registros em bloco, reduzindo drasticamente o tempo de importação. Para 1 milhão de linhas, a diferença é de minutos (ou até horas) para segundos.
Na prática, o comando seria algo como:
LOAD DATA INFILE '/caminho/arquivo.csv'
INTO TABLE processos
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
O mysqlimport é apenas um wrapper de linha de comando que faz exatamente isso, com a sintaxe mysqlimport --fields-terminated-by=',' --fields-enclosed-by='"' --lines-terminated-by='\n' banco tabela.csv. Ambos são a resposta canônica para importação em massa no MySQL.
A alternativa D menciona uma técnica válida de otimização (inserir em tabela sem índices e depois criar os índices), mas ela ainda depende de INSERT — e, no caso, propõe INSERT ... SELECT, que é mais lento que o LOAD DATA INFILE porque envolve a execução de uma consulta e a inserção linha a linha. A alternativa B (lotes de 100) é melhor que INSERT individual, mas ainda sofre o overhead de cada instrução. A alternativa E (gerar arquivo .sql e importar via phpMyAdmin) é ainda pior, pois o phpMyAdmin tem limites de execução e o arquivo .sql precisa ser interpretado.
A pegadinha da banca está em confundir "otimização de INSERT" (lotes, desabilitar índices, usar tabela temporária) com "importação nativa de arquivo". O LOAD DATA INFILE é a ferramenta específica para esse cenário, e é a que a banca espera que você conheça.
1Arquivo CSV no servidor
2LOAD DATA INFILE
3Leitura direta em bloco
4Inserção otimizada
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Um INSERT por linha significa 1.000.000 de instruções SQL. Cada uma passa pelo parser, pela verificação de permissões, pela geração do plano e pela escrita no log — um overhead enorme. É a estratégia mais lenta entre as apresentadas, mesmo com autocommit desabilitado.
Alternativa B — ❌ Incorreta
Inserir em lotes de 100 reduz o número de instruções (10.000 no total), o que é melhor que a alternativa A, mas ainda assim cada lote é uma instrução SQL interpretada. O LOAD DATA INFILE é mais rápido porque elimina a camada de interpretação SQL para cada registro.
Alternativa C — ✅ Correta ⟵ GABARITO
O LOAD DATA INFILE (e o mysqlimport) é a ferramenta nativa do MySQL para importação em massa de arquivos de texto. Ele lê o arquivo diretamente no servidor, em operação de baixo nível, e insere os registros em bloco, sendo a estratégia mais rápida para grandes volumes de dados.
Alternativa D — ❌ Incorreta
A técnica de inserir em tabela temporária (ou sem índices) e depois criar os índices é uma otimização válida para INSERT, mas ainda depende de executar instruções SQL. O INSERT ... SELECT é mais lento que o LOAD DATA INFILE porque envolve a execução de uma consulta e a inserção linha a linha.
Alternativa E — ❌ Incorreta
Exportar o CSV para um arquivo .sql com INSERTs e importar via phpMyAdmin é a pior estratégia: o arquivo .sql precisa ser interpretado pelo MySQL, e o phpMyAdmin impõe limites de tempo e tamanho de execução, tornando a importação ainda mais lenta e propensa a falhas.
PEGA ESSA DICA!
Na prova, quando a questão falar em importar um arquivo (CSV, TXT) para o MySQL, a resposta quase sempre será LOAD DATA INFILE ou mysqlimport. Guarde a diferença: INSERT é para inserir dados já em memória; LOAD DATA INFILE é para importar arquivos. Se a alternativa mencionar "lotes", "tabela temporária" ou "desabilitar índices", desconfie — são otimizações de INSERT, não a ferramenta nativa de importação.