Si PHP est installé sur la machine que vous utilisez, vous pouvez écrire un script PHP pour ce faire. Il nécessite l'installation PHP a l'extension MySQL installée.
Vous pouvez appeler l'interpréteur PHP à partir de la ligne de commande comme ceci:
php --php-ini path/to/php.ini your-script.php
J'inclus le --php-ini
commutateur, car vous devrez peut-être utiliser votre propre configuration PHP qui active l'extension MySQL. Sur PHP 5.3.0+, cette extension est activée par défaut, il n'est donc plus nécessaire d'utiliser la configuration pour l'activer.
Ensuite, vous pouvez écrire votre script d'exportation comme n'importe quel script PHP normal:
<?php
#mysql_connect("localhost", "username", "password") or die(mysql_error());
mysql_select_db("mydb") or die(mysql_error());
$result = mysql_query("SELECT * FROM table_with_the_data p WHERE p.type = $typeiwant");
$result || die(mysql_error());
while($row = mysql_fetch_row($result)) {
$comma = false;
foreach ($row as $item) {
# Make it comma separated
if ($comma) {
echo ',';
} else {
$comma = true;
}
# Quote the quotes
$quoted = str_replace("\"", "\"\"", $item);
# Quote the string
echo "\"$quoted\"";
}
echo "\n";
}
?>
L'avantage de cette méthode est qu'elle n'a aucun problème avec varchar et les champs de texte qui contiennent du texte contenant des sauts de ligne. Ces champs sont correctement cités et ces retours à la ligne seront interprétés par le lecteur CSV comme faisant partie du texte, et non comme des séparateurs d'enregistrement. C'est quelque chose qui est difficile à corriger par la suite avec sed .
REPLACE()
dans votre requête pour échapper les guillemets.