This website uses cookies

Our website, platform and/or any sub domains use cookies to understand how you use our services, and to improve both your experience and our marketing relevance.

Como importar e exportar ficheiros CSV utilizando PHP e MySQL

Updated on October 3, 2025

8 Min Read

Principais conclusões:

  • Gere facilmente os dados da tua aplicação PHP, aprendendo a importar e exportar entre ficheiros MySQL e CSV.
  • Este tutorial prático, passo a passo, com exemplos de código, irá guiar-te através de uma transferência de dados sem problemas.
  • Torna-te competente nestas técnicas para simplificar tarefas como a migração de dados, cópias de segurança e integrações de sistemas.

O PHP é amplamente utilizado para construir uma vasta gama de produtos, desde aplicações Web a aplicações de nível empresarial. A chave para um código PHP eficiente é seguir fluxos de trabalho adequados e automatizar processos. O resultado é um código de alta qualidade e sem erros.

Em quase todas as aplicações PHP, os dados são armazenados, acedidos e trocados entre vários componentes da aplicação. Para garantir que este intercâmbio e acesso aos dados decorre sem problemas, a equipa de desenvolvimento tem de se certificar de que as bases de dados e as descargas de dados estão no formato correto.

A importação e exportação de dados de e para bases de dados é um procedimento bastante comum no desenvolvimento de PHP. Outra atividade importante é o backup e a transferência de bases de dados.

Neste artigo, vou explicar como exportar um ficheiro csv a partir de tabela de dados mysql. Tens de regista-te na Cloudways para iniciar um servidor e uma aplicação PHPstack. Antes de te inscreveres, é aconselhável analisar todas as opções de preços dos fornecedores de alojamento de classe mundial, como a AWS, a DigitalOcean, a Linode, a Vultr e a GCP, para que possas encontrar a que melhor se adapta às tuas necessidades.

Aloja sites PHP com facilidade [A partir de $10 de crédito]

  • Encenação gratuita
  • Backup gratuito
  • PHP 8.0
  • Websites ilimitados

TESTE AGORA ⇒

Cria uma base de dados no MySQL

O primeiro passo neste tutorial é a criação de um ficheiro Base de dados MySQL. Desde que Cloudways fornece o gestor mysql personalizado na plataforma que contém uma base de dados para a aplicação. podes criar tabelas executando consultas SQL. Cria uma tabela ` informação do empregado na base de dados utilizando a seguinte consulta SQL.

CREATE TABLE employeeinfo(
emp_id VARCHAR(50) UNSIGNED PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
apelido VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date VARCHAR(50)
)

Cria uma nova tabela `informação do empregado na base de dados. Utilizarei esta tabela para inserir dados do ficheiro CSV.

Pára de perder tempo com os servidores

A Cloudways trata da gestão de servidores por ti, para que te possas concentrar na criação de excelentes aplicações e em manter os teus clientes satisfeitos.

Cria uma ligação MySql em PHP

Para importar e exportar a base de dados no MySql faz um ficheiro separado `config.php`. Adiciona o seguinte código e substitui as credenciais da base de dados pelas tuas. Podes encontrar as tuas credenciais de base de dados em Detalhes de acesso à aplicação:

<?php
função getdb(){
$servername = "localhost";
$username = "huscqxzwaw";
$password = "2WWKxxxxHr";
$db = "huscqxzwaw";

tenta {
   
  $conn = mysqli_connect($servername, $username, $password, $db);
  //echo "Ligado com sucesso";  
  }
catch(exceção $e)
  {
  echo "A ligação falhou: " . $e->getMessage(); 
  }
  devolve $conn;
}
?>

Como ligar a base de dados MySQL a sites PHP>

Como importar CSV para MySQL usando PHP?

Depois de a base de dados ter sido criada, precisamos de um ficheiro HTML que possa carregar um ficheiro CSV. Vamos começar com passos simples a seguir.

Passo 1: Cria uma base de dados e uma tabela
Primeiro, tens de criar uma base de dados e uma tabela no MySQL onde vais armazenar os dados CSV. Segue um exemplo de consulta SQL para criar uma tabela chamada employeeinfo:

CREATE TABLE employeeinfo (
  emp_id INT(11) NOT NULL,
  nome próprio VARCHAR(255) NOT NULL,
  apelido VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL,
  reg_date DATE NOT NULL,
  PRIMARY KEY (emp_id)
);

Passo 2: Concebe o formulário de importação
Agora precisamos de criar um formulário HTML para carregar o ficheiro CSV. Este formulário permitirá que os utilizadores seleccionem um ficheiro CSV do seu computador e o carreguem para o teu servidor.

<form action="index.php" method="post" enctype="multipart/form-data">
 
 
</form>

Passo 3: Trata do carregamento e da validação de ficheiros
No teu script PHP, trata do carregamento do ficheiro e valida que o ficheiro carregado é um ficheiro CSV.

se (isset($_POST["Import"])) {
  $filename = $_FILES["file"]["tmp_name"];
    
  // Verifica se o ficheiro é um ficheiro CSV
  Se (pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION) != "csv") {
  echo "Carrega um ficheiro CSV";
  sai;
  }
    
  // Prossegue com a importação do ficheiro CSV
  importCSV($filename);
}

Passo 4: Importar dados CSV para o MySQL
Cria uma função chamada importCSV() para lidar com a importação de CSV. Esta função irá ler o ficheiro CSV e inserir os seus dados na base de dados MySQL utilizando instruções preparadas.

functions.php (Secção de importação)
Eis como podes implementar a função importCSV() de forma segura:

função importCSV($filename) {
  // Obtém uma ligação segura à base de dados
  $conn = getConnection(); // Certifica-te de que esta função devolve uma ligação segura
    
  // Abre o ficheiro CSV
  $file = fopen($filename, "r");
    
  // Salta a linha do cabeçalho (se existir)
  fgetcsv($file, 10000, ","); // Ajusta o delimitador se necessário
    
  // Prepara a consulta SQL
  $sql = "INSERIR INTO employeeinfo (emp_id, firstname, lastname, email, reg_date) VALUES (?, ?, ?, ?, ?, ?)";
  $stmt = $conn->prepare($sql);
    
  se ($stmt === false) {
  die("Error preparing statement: " . $conn->error); // Trata o erro de preparação
  }
    
  // Liga os parâmetros
  $stmt->bind_param("sssss", $emp_id, $firstname, $lastname, $email, $reg_date);
    
  while (($getData = fgetcsv($file, 10000, ",")) !== FALSE) {
  // Valida os dados (exemplo de validação)
  se (count($getData) != 5) {
  error_log("Linha CSV inválida: " . implode(",", $getData)); 
  continue; // Passa para a linha seguinte
  }
        
  // Atribui valores
  $emp_id = $getData[0];
  $firstname = $getData[1];
  $lastname = $getData[2];
  $email = $getData[3];
  $reg_date = $getData[4];
        
  // Executa a consulta
  se (!$stmt->execute()) {
  error_log("Erro ao inserir a linha: " . $stmt->error);
  }
  }
    
  // Fecha a declaração e a ligação
  $stmt->close();
  fclose($file);
  $conn->close();
    
  ecoa "
  alert(\"O ficheiro CSV foi importado com sucesso.\");
  window.location = \"index.php\"
  ";
}

// Exemplo de uma função getConnection() segura
função getConnection(): mysqli
{
  $servername = $_ENV["DB_HOST"] ?? "localhost"; // Predefine para localhost se não estiver definido 
  $username = $_ENV["DB_USER"] ?? "your_db_user"; // Fornece predefinições razoáveis 
  $password = $_ENV["DB_PASSWORD"] ?? "a tua palavra-passe_db"; 
  $dbname = $_ENV["DB_NAME"] ?? "teu_nome_do_banco_de_dados"; 

  tenta {
  $conn = new mysqli($servername, $username, $password, $dbname);
  se ($conn->connect_error) {
  lança uma nova Exceção ("A ligação falhou: " . $conn->connect_error);
  }
  devolve $conn;
  } catch (Exception $e) {
  error_log("Erro de ligação à base de dados: " . $e->getMessage()); // Regista o erro 
  die("Failed to connect to the database. Check your configuration."); // Erro fatal, pára a execução
  }
}

Alternativa: Usando o INFILE DE CARGA DE DADOS do MySQL

Para arquivos CSV grandes, considera usar o comando LOAD DATA INFILE do MySQL, que é muito mais rápido do que processar o arquivo linha por linha com o PHP:

$loadSQL = "LOAD DATA LOCAL INFILE '$filename' INTO TABLE employeeinfo FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINHAS TERMINADAS POR '\n' IGNORE 1 LINHAS";
mysqli_query($conn, $loadSQL);

Este método requer a palavra-chave LOCAL se estiveres a executar a consulta a partir de um servidor remoto. Certifica-te de que o utilizador MySQL tem as permissões necessárias para utilizar LOAD DATA INFILE.

Apresenta os registos guardados

Uma vez importado o ficheiro CSV, vou apresentar os dados através de uma função simples, `get_all_records()`, inicializado em `index.php`. Copia esta função para `function.php`.

função get_all_records(){
  $con = getdb();
  $Sql = "SELECT * FROM employeeinfo";
  $resultado = mysqli_query($con, $Sql);  


  Se (mysqli_num_rows($result) > 0) {
  ecoa "

 

ID EMP

 

Nome próprio

 

Último nome

 

Correio eletrónico

 

Data de registo

 

";

while($row = mysqli_fetch_assoc($result)) { ecoa ”

" . $linha['emp_id']."

 

" . $linha['primeiro nome']."

 

" . $linha['apelido']."

 

" . $row['email']."

 

" . $row['reg_date']."

“; } ecoa “”; } else { echo “não tens registos”; } }

Neste método muito simples, selecionei simplesmente todos os registos e apresentei-os na página de índice através do método. Sempre que o utilizador carregar um ficheiro CSV, os registos serão guardados na tabela e depois apresentados na página de índice.

Exportar MySQL para CSV com PHP

Exportar dados da base de dados MySQL para um ficheiro CSV é igualmente muito fácil. Para o demonstrar, vou usar o comando index.php que criei anteriormente.

Adiciona o seguinte código ao ficheiro.

  <div>

enctype=”multipart/form-data”>

</div>

Depois de adicionares esta marcação HTML, o ficheiro Exportação aparecerá por baixo da tabela. Agora, adiciona a seguinte condição em functions.php.

  se(isset($_POST["Export"]))){
		 
  header('Content-Type: text/csv; charset=utf-8');  
  header('Content-Disposition: attachment; filename=data.csv');  
  $output = fopen("php://output", "w");  
  fputcsv($output, array('ID', 'First Name', 'Last Name', 'Email', 'Joining Date'));  
  $query = "SELECT * from employeeinfo ORDER BY emp_id DESC";  
  $resultado = mysqli_query($con, $query);  
  while($row = mysqli_fetch_assoc($result))  
  {  
  fputcsv($output, $row);  
  }  
  fclose($output);  
  }  

Quando o `Exportar` é clicado, os cabeçalhos `Content-Type: text/csv` com um anexo `dados.csv` é enviado.

Desde que `php://output` é um fluxo somente de escrita que permite acesso de escrita ao mecanismo de buffer de saída, eu selecionei todos os dados da tabela na próxima linha, e passei para `fputcsv()` método. Este método formata uma linha (passada como uma matriz de campos) como CSV e escreve-a (terminada por uma nova linha) no ficheiro especificado. Finalmente, descarrega o ficheiro com todos os dados desejados.

Finalmente, depois de integrares todo o código, verás a seguinte forma final da aplicação.

cloudways importar excel

Hospedagem PHP gerenciada superalimentada – Para velocidade 10X e segurança de ferro

Liberta o verdadeiro poder do teu site com o alojamento PHP – onde a velocidade, a segurança e o desempenho sem falhas se juntam para uma experiência online excecional!

Conclusão

Neste artigo, discuti como podes exportar dados de e para ficheiros CSV utilizando PHP e MySQL. Este é um exemplo simples. Podes adicionar lógica e validações mais complexas de acordo com os teus requisitos. Também podes criar casos de teste para verificar o código e integrar com o GitHub utilizando PHP Integração Contínua Ferramentas. Se quiseres contribuir para a discussão ou se quiseres fazer uma pergunta, deixa um comentário em baixo e embarca na tua viagem de codificação com a ajuda de melhor serviço de alojamento PHP.

Como é que posso importar e exportar CSV utilizando PHP e MySQL?

Para importar e exportar ficheiros CSV em PHP com MySQL, começa por validar o carregamento do ficheiro com a função is_uploaded_file() do PHP. Em seguida, abre o arquivo usando , e lê o conteúdo com . Depois de analisar os dados, insere-os ou actualiza-os na base de dados MySQL com base em identificadores únicos, como o e-mail.

Existem bibliotecas ou funções PHP especificamente concebidas para importar/exportar dados CSV?

Sim, o PHP oferece várias ferramentas para lidar com arquivos CSV. A função incorporada lê linhas CSV, enquanto bibliotecas como League\Csv simplificam a gestão de dados CSV, e PhpSpreadsheet suporta vários formatos de ficheiro. Além disso, o ParseCsv é uma opção leve para tarefas específicas de CSV.

Há alguma limitação ou consideração ao importar ou exportar grandes ficheiros CSV com PHP e MySQL?

Ao trabalhar com arquivos CSV grandes, as principais considerações incluem o uso de memória, o tempo de execução e a capacidade de lidar com pedaços de dados. É importante validar e sanitizar os dados, garantir a codificação e o formato adequados e implementar o tratamento de erros para um processamento mais suave.

Quais são algumas alternativas ao PHP e ao MySQL para importar e exportar dados CSV?

Alternativas ao PHP e ao MySQL para lidar com ficheiros CSV incluem Python com pandas para uma poderosa manipulação de dados, R para tarefas estatísticas e Java com Apache Commons CSV. Ferramentas de linha de comando como awk e sed oferecem capacidades de processamento de texto, enquanto o Excel ou o Google Sheets oferecem interfaces fáceis para pequenos conjuntos de dados.

Como importar e exportar ficheiros CSV utilizando PHP e MySQL?

Para importar e exportar ficheiros CSV, valida o carregamento do ficheiro utilizando is_uploaded_file() e lê-o com fopen() e fgetcsv(). Após a análise, insere ou actualiza os dados no MySQL, assegurando o tratamento adequado de ficheiros maiores, incluindo a gestão de chunking e de memória.

Como importar CSV para MySQL usando PHP?

Para importar CSV para o MySQL utilizando PHP, abre o CSV com fopen(), depois lê cada linha com fgetcsv() e insere os dados na base de dados MySQL utilizando consultas SQL. Certifica-te de que os caminhos dos ficheiros e os erros são tratados corretamente para uma importação eficiente.

Como exportar um ficheiro CSV para o MySQL?

A exportação de um ficheiro CSV para o MySQL envolve a preparação do CSV, a criação de uma tabela no MySQL e a utilização de comandos SQL como LOAD DATA INFILE para importar o ficheiro. Certifica-te de que os mapeamentos de colunas estão corretos para se alinharem com a estrutura da base de dados.

Share your opinion in the comment section. COMMENT NOW

Share This Article

Shahzeb Ahmed

Um criativo de dia (com uma chávena de chá) e um criativo de noite. Ahmad Kamran é um escritor de conteúdos sazonais e Executivo de Marketing Sénior na Cloudways. Podes encontrá-lo na sua secretária a escrever, a criar estratégias ou a jogar jogos. E, caso não o encontres aqui, ele estará nas montanhas ou à beira do rio.

×

Webinar: How to Get 100% Scores on Core Web Vitals

Join Joe Williams & Aleksandar Savkovic on 29th of March, 2021.

Do you like what you read?

Get the Latest Updates

Share Your Feedback

Please insert Content

Thank you for your feedback!

Do you like what you read?

Get the Latest Updates

Share Your Feedback

Please insert Content

Thank you for your feedback!

Quer experimentar a plataforma Cloudways em todo o seu esplendor?

Faça um tour guiado GRATUITO pela Cloudways e veja por si mesmo como é fácil gerenciar seu servidor e suas aplicações na principal plataforma de hospedagem em nuvem.

Iniciar mi recorrido