Можно ли как-нибудь включить заголовки при использовании MySQL INTO OUTFILE
?
mysql
into-outfile
Бретт
источник
источник
ORDER BY
вSELECT
пункте есть. Строка заголовка может быть где угодно в сгенерированном файле в зависимости от порядка.Решение, предложенное Джо Стеанелли, работает, но создание списка столбцов неудобно, когда задействованы десятки или сотни столбцов. Вот как получить список столбцов таблицы my_table в my_schema .
Теперь вы можете скопировать и вставить полученную строку в качестве первого оператора в методе Джо.
источник
ORDER BY ORDINAL_POSITION
ручки , которыеGROUP_CONCAT(CONCAT('"',COLUMN_NAME,'"') order BY ORDINAL_POSITION)
Для сложного выбора с ORDER BY я использую следующее:
источник
Вы можете использовать подготовленный оператор с ответом Лучека и динамически экспортировать таблицу с именем столбца в CSV:
Спасибо лучек.
источник
Это позволит вам иметь упорядоченные столбцы и / или ограничение
источник
Query OK, 100 rows affected (14.72 sec)
Второй проход с вашимQuery OK, 101 rows affected (0.00 sec)
Я просто делаю 2 запроса, первый для получения вывода запроса (ограничение 1) с именами столбцов (без жесткого кода, без проблем с объединениями, упорядочиванием, именами пользовательских столбцов и т. Д.), А второй для создания самого запроса и объединения файлов в один CSV файл:
источник
Я столкнулся с аналогичной проблемой при выполнении запроса mysql для больших таблиц в NodeJS. Подход, который я использовал для включения заголовков в свой CSV-файл, выглядит следующим образом.
Используйте запрос OUTFILE для подготовки файла без заголовков
Получить заголовки столбцов для таблицы, использованной в пункте 1
Добавьте заголовки столбцов в файл, созданный на шаге 1, с помощью пакета npm prepend-file
Выполнение каждого шага контролировалось с помощью обещаний в NodeJS.
источник
Это альтернативный чит, если вы знакомы с Python или R, и ваша таблица может поместиться в памяти.
Импортируйте таблицу SQL в Python или R, а затем экспортируйте оттуда как CSV, и вы получите имена столбцов, а также данные.
Вот как я это делаю с помощью R, требует библиотеки RMySQL:
Это немного обман, но я обнаружил, что это быстрое решение, когда мое количество столбцов было слишком большим для использования метода concat, описанного выше. Примечание: R добавит столбец «row.names» в начало CSV, поэтому вы захотите удалить его, если вам действительно нужно полагаться на CSV для воссоздания таблицы.
источник
Итак, если все столбцы
my_table
являются символьными данными , мы можем объединить главные ответы (Джо, Мэтт и Злогук) вместе, чтобы автоматически добавить заголовок в один «простой» SQL-запрос, напримергде последняя пара строк делает вывод csv.
Обратите внимание, что это может быть медленным, если
my_table
оно очень большое.источник
Я думаю, если вы воспользуетесь UNION, он будет работать:
Я не знаю, как напрямую указать заголовки с синтаксисом INTO OUTFILE.
источник
На самом деле вы можете заставить его работать даже с ORDER BY.
Просто нужна хитрость в операторе order by - мы используем оператор case и заменяем значение заголовка некоторым другим значением, которое гарантированно будет отсортировано первым в списке (очевидно, это зависит от типа поля и от того, сортируете ли вы ASC или DESC)
Допустим, у вас есть три поля, name (varchar), is_active (bool), date_something_happens (date), и вы хотите отсортировать вторые два по убыванию:
источник
Поскольку функция 'include-headers', похоже, еще не встроена, и для большинства «решений» здесь необходимо вводить имена столбцов вручную и / или даже не принимать во внимание объединения, я бы рекомендовал обойти проблему .
Лучшая альтернатива, которую я нашел до сих пор, - это использование приличного инструмента (я использую HeidiSQL ).
Поместите свой запрос, выберите сетку, щелкните правой кнопкой мыши и экспортируйте в файл. В нем есть все необходимые параметры для чистого экспорта, и он должен удовлетворить большинство потребностей.
По той же идее подход user3037511 работает нормально и может быть легко автоматизирован .
Просто запустите свой запрос с помощью командной строки чтобы получить заголовки. Вы можете получить данные с помощью SELECT INTO OUTFILE ... или выполнив свой запрос без ограничений, на ваш выбор.
Обратите внимание, что перенаправление вывода в файл работает как шарм как в Linux, так и в Windows.
Это заставляет меня подчеркнуть, что в 80% случаев, когда я хочу использовать SELECT FROM INFILE или SELECT INTO OUTFILE, я в конечном итоге использую что-то еще из-за некоторых ограничений (здесь отсутствие параметров заголовков '' на AWS-RDS, отсутствующие права и т. д.)
Следовательно, я не совсем отвечаю на вопрос оператора ... но он должен отвечать его потребностям :)
РЕДАКТИРОВАТЬ: и на самом деле ответить на его вопрос: нет.
По состоянию на 2017-09-07 вы просто не можете включать заголовки, если вы придерживайтесь команды SELECT INTO OUTFILE : |
источник
пример из моего датчика имени таблицы базы данных с столбцами (id, time, unit)
источник
Я писал свой код на PHP, и у меня были небольшие проблемы с использованием функций concat и union, а также я не использовал переменные SQL, какими бы способами я ни заставил их работать, вот мой код:
источник
Вот способ динамического получения заголовков из имен столбцов.
источник
Я хотел бы дополнить ответ Сангама Белозе. Вот его код:
Однако, если вы не настроили свои
"secure_file_priv"
переменные, это может не сработать. Для этого проверьте папку, установленную для этой переменной:Результат должен выглядеть так:
Вы можете изменить эту переменную или изменить запрос, чтобы выводить файл по указанному по умолчанию пути.
источник
Для этого недостаточно только MySQL. Ниже приведен сценарий PHP, который выводит столбцы и данные в CSV.
Введите название своей базы данных и таблицы вверху.
Вам нужно, чтобы это был каталог, в который вы хотите выводить данные. MySQL должен иметь возможность писать в каталог.
Вы можете изменить параметры экспорта CSV в запросе:
В конце есть вызов exec для GZip CSV.
источник
источник