Nếu có PHP được cài đặt trên máy bạn đang sử dụng, bạn có thể viết một tập lệnh PHP để làm điều đó. Nó yêu cầu cài đặt PHP có cài đặt phần mở rộng MySQL.
Bạn có thể gọi trình thông dịch PHP từ dòng lệnh như vậy:
php --php-ini path/to/php.ini your-script.php
Tôi bao gồm cả --php-ini
chuyển đổi, bởi vì bạn có thể cần phải sử dụng cấu hình PHP của riêng bạn cho phép mở rộng MySQL. Trên PHP 5.3.0+, tiện ích mở rộng đó được bật theo mặc định, do đó không còn cần thiết phải sử dụng cấu hình để kích hoạt nó.
Sau đó, bạn có thể viết tập lệnh xuất của mình giống như bất kỳ tập lệnh PHP thông thường nào:
<?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";
}
?>
Ưu điểm của phương pháp này là, nó không có vấn đề gì với các trường varchar và văn bản, có văn bản chứa dòng mới. Các trường đó được trích dẫn chính xác và những dòng mới trong đó sẽ được trình đọc CSV diễn giải như một phần của văn bản, không phải là dấu phân tách bản ghi. Đó là một cái gì đó rất khó để sửa sau đó với sed hoặc như vậy.
REPLACE()
trong truy vấn của mình để thoát dấu ngoặc kép.