Si hay PHP instalado en la máquina que está utilizando, puede escribir un script PHP para hacerlo. Requiere que la instalación de PHP tenga instalada la extensión MySQL.
Puede llamar al intérprete PHP desde la línea de comandos de la siguiente manera:
php --php-ini path/to/php.ini your-script.php
Incluyo el --php-ini
conmutador, porque es posible que deba usar su propia configuración de PHP que habilite la extensión MySQL. En PHP 5.3.0+, esa extensión está habilitada de manera predeterminada, por lo que ya no es necesario usar la configuración para habilitarla.
Luego puede escribir su script de exportación como cualquier 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";
}
?>
La ventaja de este método es que no tiene problemas con los campos varchar y de texto, que tienen texto que contiene nuevas líneas. Esos campos se citan correctamente y esas líneas nuevas en ellos serán interpretadas por el lector CSV como parte del texto, no separadores de registros. Eso es algo que es difícil de corregir después con sed más o menos.
REPLACE()
en su consulta para que las comillas escapen.