Поскольку я довольно регулярно ищу именно эту проблему (в надежде, что я что-то упустил раньше ...), я, наконец, решил не торопиться и написать небольшую суть для экспорта запросов MySQL в виде файлов CSV , вроде как https://stackoverflow.com/a/28168869, но на основе PHP и с несколькими дополнительными опциями. Это было важно для моего варианта использования, потому что мне нужно иметь возможность точно настроить параметры CSV (разделитель, обработка значения NULL) И файлы должны быть действительно действительными CSV, так что простого CONCAT
недостаточно, так как не генерирует действительные файлы CSV, если значения содержат разрывы строк или разделитель CSV.
Внимание! Требуется установить PHP на сервер!
(Можно проверить через php -v
)
«Установить» mysql2csv
через
wget https://gist.githubusercontent.com/paslandau/37bf787eab1b84fc7ae679d1823cf401/raw/29a48bb0a43f6750858e1ddec054d3552f3cbc45/mysql2csv -O mysql2csv -q && (sha256sum mysql2csv | cmp <(echo "b109535b29733bd596ecc8608e008732e617e97906f119c66dd7cf6ab2865a65 mysql2csv") || (echo "ERROR comparing hash, Found:" ;sha256sum mysql2csv) ) && chmod +x mysql2csv
(загрузить содержимое гистограммы, проверить контрольную сумму и сделать ее исполняемой)
Пример использования
./mysql2csv --file="/tmp/result.csv" --query='SELECT 1 as foo, 2 as bar;' --user="username" --password="password"
создает файл /tmp/result.csv
с содержимым
foo,bar
1,2
справка для справки
./mysql2csv --help
Helper command to export data for an arbitrary mysql query into a CSV file.
Especially helpful if the use of "SELECT ... INTO OUTFILE" is not an option, e.g.
because the mysql server is running on a remote host.
Usage example:
./mysql2csv --file="/tmp/result.csv" --query='SELECT 1 as foo, 2 as bar;' --user="username" --password="password"
cat /tmp/result.csv
Options:
-q,--query=name [required]
The query string to extract data from mysql.
-h,--host=name
(Default: 127.0.0.1) The hostname of the mysql server.
-D,--database=name
The default database.
-P,--port=name
(Default: 3306) The port of the mysql server.
-u,--user=name
The username to connect to the mysql server.
-p,--password=name
The password to connect to the mysql server.
-F,--file=name
(Default: php://stdout) The filename to export the query result to ('php://stdout' prints to console).
-L,--delimiter=name
(Default: ,) The CSV delimiter.
-C,--enclosure=name
(Default: ") The CSV enclosure (that is used to enclose values that contain special characters).
-E,--escape=name
(Default: \) The CSV escape character.
-N,--null=name
(Default: \N) The value that is used to replace NULL values in the CSV file.
-H,--header=name
(Default: 1) If '0', the resulting CSV file does not contain headers.
--help
Prints the help for this command.