Como importar um arquivo CSV para o MySQL usando PHP?
Importar dados de um arquivo CSV para o MySQL usando PHP é uma técnica útil para migrar informações de outros sistemas, carregar bases de clientes ou atualizar registros de forma massiva.
Estrutura da Tabela no MySQL
Antes de importar os dados, criamos uma tabela adequada para armazenar as informações:
CREATE TABLE usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL
);
Criando o Formulário de Upload
Para permitir o envio do arquivo CSV, criamos um formulário HTML:
<form action="importar.php" method="post" enctype="multipart/form-data">
<input type="file" name="arquivo_csv" accept=".csv" required>
<button type="submit">Importar CSV</button>
</form>
Criando o Script de Importação com PHP
Agora, criamos o arquivo importar.php
para processar a importação:
<?php
if (isset($_FILES['arquivo_csv'])) {
$arquivo = $_FILES['arquivo_csv']['tmp_name'];
$conexao = new PDO("mysql:host=localhost;dbname=meu_banco", "usuario", "senha");
$conexao->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$handle = fopen($arquivo, "r");
fgetcsv($handle); // Ignorar cabeçalho
while ($linha = fgetcsv($handle, 1000, ",")) {
$sql = "INSERT INTO usuarios (nome, email) VALUES (:nome, :email)";
$stmt = $conexao->prepare($sql);
$stmt->bindParam(':nome', $linha[0]);
$stmt->bindParam(':email', $linha[1]);
$stmt->execute();
}
fclose($handle);
echo "Arquivo CSV importado com sucesso!";
}
?>
Explicação do Código
- O script recebe o arquivo enviado pelo formulário.
- Ele abre o arquivo CSV e lê linha por linha usando
fgetcsv()
. - Cada linha é inserida no banco de dados utilizando PDO com prepared statements para evitar SQL Injection.
fgetcsv($handle);
é usado para ignorar o cabeçalho do CSV.
Por que importar arquivos CSV para o MySQL com PHP?
A importação de arquivos CSV no MySQL com PHP permite a rápida inserção de grandes volumes de dados sem a necessidade de operações manuais. Muitas empresas utilizam esse método para importar listas de clientes, produtos ou registros financeiros. A combinação de PHP, CSV e MySQL torna essa tarefa altamente eficiente e escalável.
Algumas aplicações:
- Importação de listas de usuários para um sistema
- Atualização massiva de registros no banco de dados
- Integração entre diferentes sistemas através de arquivos CSV
- Automação de processos de inserção de dados
Dicas para quem está começando
- Certifique-se de que o arquivo CSV tem o mesmo formato da tabela no banco.
- Use
fgetcsv()
para ler cada linha do arquivo de forma eficiente. - Utilize prepared statements para evitar SQL Injection.
- Valide os dados antes de inseri-los no banco.
- Exiba mensagens de erro claras para o usuário em caso de falha.
Contribuições de Daniel Moreira