MYSQL Выбрать в файл
Я хотел бы сохранить выходные данные из "Select * FROM table1" в консоли в файл на PHP.
Какой самый эффективный способ сделать это в php?
Редактировать: я хотел бы, чтобы вывод был похож на тип в консоли, т.е.
+--------+--------+
| thing1 | thing2 |
+--------+--------+
| item1a | item2a |
| item1b | item2b |
+--------+--------+
Кроме того, я думал, что код php должен быть "exec(команда mysql, которую я ищу)". Насколько я понимаю, mysql_fetch_array работает медленно, и я ищу простой вывод... так что должно быть возможно как-то сделать это с консоли. (Спасибо за ответы пока!)
2 ответа
Вы можете использовать синтаксис INTO OUTFILE MySQL - это приведет к созданию текстового файла с разделителями-запятыми (CSV):
SELECT *
INTO OUTFILE '/tmp/result.txt'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM YOUR_TABLE;
Разрешения на запись файлов в указанное местоположение должны быть на месте.
В каком формате? Если вы хотите, чтобы они были разделены табуляцией, вы можете использовать что-то вроде этого:
$r = mysql_query("SELECT * FROM table1");
$str = '';
while($row = mysql_fetch_assoc($r)) {
$str .= implode("\t", $row)."\n";
}
file_put_contents('table1.txt', $str);
Или в CSV:
$r = mysql_query("SELECT * FROM table1");
$fp = fopen('table1.csv', 'w');
while($row = mysql_fetch_assoc($r)) {
fputcsv($fp, $row);
}
fclose($fp);
Или, как другие заметили, использовать собственный OUTFILE MySQL, о котором я не знал.:)