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, о котором я не знал.:)

Другие вопросы по тегам