Будьте осторожны при развертывании своих действий, если только вы не обрабатываете такие вещи, как NULL, наборы символов и т. Д.
Первая альтернатива:
<?php
$pdo = new PDO(...);
$results = $pdo->query("SELECT * FROM myTable INTO OUTFILE 'data.txt'");
$dummy = $result->fetchAll();
Файл data.txt будет записан на сервере MySQL. Каталог должен быть доступен для записи с помощью uid процесса mysqld. Он не будет перезаписывать ни один из существующих файлов и требует наличия у вас привилегии FILE
SQL.
Второй вариант: используйте mysqldump для вывода в плоский текстовый файл (как упоминалось @OMG Ponies):
mysqldump -t -T <directory> <database> <table>
Это работает как INTO OUTFILE
, оно должно быть запущено на хосте сервера MySQL, и каталог должен быть доступен для записи с помощью mysqld uid.
Третий вариант: выполнить запрос с клиентом mysql и вывести текст:
mysql -B -e "SELECT * FROM MyTable" <database> > mytable.txt
Это может быть выполнено на любом хосте, и не требует никаких специальных привилегий или разрешений каталога. Но NULL не может быть обработан, как это было бы с mysqldump или INTO OUTFILE
.