MySQL к CSV с именами столбцов в первой строке, вставленной динамически - PullRequest
2 голосов
/ 27 марта 2012

Я существенно пересматриваю свой первоначальный вопрос ...

Это прекрасно работает для выгрузки вашей таблицы в CSV с именами полей в первой строке.

SELECT 'field1', 'field2', 'field3' 
UNION SELECT * INTO OUTFILE '/var/tmp/table_name.csv' 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\n' FROM table_name;

Однако,когда у вас есть сотни полей и новые поля добавляются или поля изменяются или удаляются время от времени, мне нужно что-то динамическое, что будет динамически помещать имена полей в вышеуказанный формат, чтобы этот запрос работал в сценарии в любое время без необходимости обновления вручнуюимена полей от руки.

1 Ответ

11 голосов
/ 27 марта 2012

Как насчет -

SELECT CONCAT(GROUP_CONCAT(COLUMN_NAME SEPARATOR ','), "\n")
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'db' AND TABLE_NAME = 'tbl'
GROUP BY TABLE_NAME;

Вы можете передать вывод этого файла в новый_файл, а затем добавить данные из запроса outfile -

cat /var/tmp/table_name.csv >> new_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...