Jeśli na używanym komputerze jest zainstalowany PHP, możesz napisać w tym celu skrypt PHP. Wymaga instalacji PHP z zainstalowanym rozszerzeniem MySQL.
Możesz wywołać interpretera PHP z wiersza poleceń w następujący sposób:
php --php-ini path/to/php.ini your-script.php
Włączam --php-ini
przełącznik, ponieważ może być konieczne użycie własnej konfiguracji PHP, która włącza rozszerzenie MySQL. W PHP 5.3.0+ to rozszerzenie jest domyślnie włączone, więc nie jest już konieczne używanie konfiguracji, aby je włączyć.
Następnie możesz napisać skrypt eksportu jak każdy normalny skrypt PHP:
<?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";
}
?>
Zaletą tej metody jest to, że nie ma problemów z varchar i polami tekstowymi, które zawierają tekst zawierający znaki nowej linii. Te pola są poprawnie cytowane, a nowe wiersze w nich będą interpretowane przez czytnik CSV jako część tekstu, a nie separatory rekordów. Jest to coś, co później trudno jest poprawić za pomocą sed lub tak dalej.
REPLACE()
w zapytaniu, aby uniknąć cytatów.