Enregistrer un SELECT vers un fichier CSV
Pour exporter le contenu d'une table MySql vers un fichier, le plus souvent, on utilise l'outil d'export de PHPMyAdmin. A partir d'un script PHP voyons comment écrire un fichier CSV d'une sélection de donnée que l'on envoie directement dans le navigateur internet.<?php
//Variable - à remplacer par vos identifiants
$host='mysql_server';
$user='username';
$pass='password';
$db='myDB';
$separator=";";
//Connecter à la DB
$DBLink=mysql_connect ($host, $user, $pass);
mysql_select_db($db, $DBLink);
//Extraire le nom des colonnes
$rsColumn = mysql_query("SHOW COLUMNS FROM myTABLE");
$columnLine="";
$columnCount=0;
if ($rsColumn) {
if (mysql_num_rows($rsColumn) > 0) {
while ($row = mysql_fetch_assoc($rsColumn)) {
$columnLine .= $row['Field'].$separator;
$columnCount++;
}
$columnLine .="\n";
}
}
//Extraire les données
$rsData=mysql_query("SELECT * FROM myTABLE");
$dataLine="";
while ($row = mysql_fetch_array($rsData)) {
for ($i = 0; $i < $columnCount; $i++) {
$dataLine.=$row[$i].$separator;
}
$dataLine.="\n";
}
//Envoyer le contenu au navigateur internet
header("Content-type: text/x-csv");
header("Content-Disposition: attachment; filename=search_results.csv");
echo $columnLine.$dataLine;
exit;
?>
Le fichier texte envoyé au navigateur internet contient:
1ere ligne: la définition des champs séparée par un point-virgule,
lignes suivantes: la valeur de chaque champs de la ligne.
Plus besoin de PHPMyAdmin pour exporter les données d'une table ou pour transférer le contenu d'une base d'un serveur vers un autre. Ce petit script PHP enregistre le contenu d'une sélection vers un fichier texte au format CSV automatiquement.