0

Gerando Arquivos CSV via MySQL

criado por Marcos Roberto de Freitas em 22/07/2004 10:27pm
Função fgetcsv()

Descrição da função:
array fgetcsv ( nome_do_arquivo, tamanho [, string delimiter [, string enclosure]])

A sintaxe do comando SQL para criar o arquivo CSV é:

<?php
$path = "c:/apache/dados_csv/arquivo.csv";
$tabela = "nome_da_tabela";

$sql_csv = "SELECT * INTO OUTFILE '$path' FIELDS TERMINATED BY ';' ENCLOSED BY '' LINES TERMINATED BY '\r\n' FROM $tabela";
?>

Caso você tente sobre-escrever o arquivo irá causar um erro, mas para isso você pode utilizar uma rotina com a função file_exists($path) para liberar a gravação do arquivo.

<?php
if (file_exists($path)) {
    echo "Arquivo já existe";
} else {
    // script sql vai aqui...
}
?>

Para ler os arquivos gerados utilizei a função fgetcsv() conforme o script abaixo:

<?php
$filename = "c:/apache/dados_csv/arquivo.csv";

$fp = fopen($filename, "r");
while ($data = fgetcsv($fp, filesize($filename), ";")) {
    $table[] = $data;
}
fclose($fp);

// imprime uma tabelinha com esses dados do arquivo csv
echo "<table width=\"1000\" border=\"1\" cellspacing=\"1\" cellpadding=\"1\">\n";
foreach ($table as $row) {
    echo "<tr>";
    foreach($row as $data) {
       echo "<td>$data</td>";
    }
    echo "</tr>\n";
}
echo "</table>\n";
?>

Comentários:

Mostrando 1 - 9 de 9 comentários
Dam disse:
Bom artigo.
20/11/2008 4:26am (~8 anos atrás)

Ficou muito bom e Prático!! Parabéns...
27/12/2007 6:22pm (~9 anos atrás)

Adriano Mayer disse:
Preciso incluir um sistema de noticias em um site em flash mas sou iniciante alguem poderia me dar umas dicas de como fazer isso.
É muito importante pra mim.
23/08/2005 6:05pm (~11 anos atrás)

Bem, CSV é isso mesmo Thomas, Valores Séparados Por Vírgula, e não ";" mas de certa forma tive problemas, trabalho em uma empresa onde meu setor tem aproximadamente 200 Pcs, utilizando a vígula com alguns softwares do Excel no mesmo sistema operacional e a mesma versão,notei que em alguns a virgula funcionava bem mas outros não, ai tentei utilizar o ";" e percebi que tinha resolvido, também não tive problemas em utilizar com a função fgetcsv(), pois foi apenas alterar o valor de separação!, mas o porque do erro no excel ainda desconheço, deve ser alguma configuração mas seria trabalhoso em muitos micros!

blz? Coisas do Ruindows! Rsss!

Marcos Roberto de Freitas
29/09/2004 3:55pm (~12 anos atrás)

Eu não estou desaprovando o artigo, mas CSV não é Comma Separate Values? Porque você está separando com ';' ?
29/09/2004 8:24am (~12 anos atrás)

Se não me engano tem que dar permissão de read/write. Portanto nada de colocar no diretório principal. hehehe
29/07/2004 8:17am (~12 anos atrás)

Tem que ter alguma permissão de servidor ou algo do tipo?? Tentei num host que esta na locaweb... não deu erro mas tmb não criou nenhum arquivo...
28/07/2004 8:22am (~12 anos atrás)

Interessante a abordagem.
Há pucos dias estava precisando de um script pra fazer isso, mas pra agilizar peguei uma classe pronta no phpclasses que usa uma abordagem diferente.

Em todo caso valeu conhecer novas abordagens.
23/07/2004 1:06pm (~12 anos atrás)

Nossa cara show de bola... não imaginava que o mysql era capaz de criar um arquivo assim, tenho um sistema de noticias que é um flash que le um txt com issovai me facilitar muito...

Valew!!!
23/07/2004 6:22am (~12 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)