Если на вашей машине установлен PHP, вы можете написать PHP-скрипт для этого. Требуется, чтобы при установке PHP было установлено расширение MySQL.
Вы можете вызвать интерпретатор PHP из командной строки следующим образом:
php --php-ini path/to/php.ini your-script.php
Я включаю --php-ini
, потому что вам может понадобиться использовать собственную конфигурацию PHP, которая включает расширение MySQL. В PHP 5.3.0+ это расширение включено по умолчанию, поэтому больше нет необходимости использовать конфигурацию для его включения.
Затем вы можете написать свой скрипт экспорта как любой обычный скрипт 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";
}
?>
Преимущество этого метода в том, что у него нет проблем с полями varchar и text, в которых есть текст, содержащий переводы строк. Эти поля правильно заключены в кавычки, и эти новые строки в них будут интерпретироваться читателем CSV как часть текста, а не разделители записей. Это то, что потом трудно исправить с помощью sed или около того.