Nano Hash - криптовалюты, майнинг, программирование

Дамп MySQL в текстовые файлы CSV с именами столбцов вверху?

Возможный дубликат:
Как экспортировать/выгрузить таблицу MySql в текстовый файл, включая имена полей (иначе заголовки или имена столбцов)

Я использую этот фрагмент SQL для вывода таблицы в текстовые файлы CSV:

SELECT * FROM brand INTO OUTFILE "e:/brand.csv" ПОЛЯ, ЗАКРЫВАЕМЫЕ ',' ЗАКРЫТЫЕ '"' СТРОКИ, ЗАКРЫВАЕМЫЕ "\n";

Однако этот подход не добавляет имена столбцов в начало CSV-файла. Мой вопрос заключается в том, как выбрать все имена столбцов/полей, как это делает phpMyAdmin, когда вы экспортируете таблицу и выбираете «Поместить имена полей в первую строку».



Ответы:


1

Я нашел способ вручную вводить эти имена, если вы используете MySQL 5 или выше. Вот он, написанный как bash-скрипт для запуска в командной строке unix:

DBNAME=<database_name>
TABLE=<table_name>

FNAME=/path/to/output/dir/$(date +%Y.%m.%d)-$DBNAME.csv

#(1)creates empty file and sets up column names using the information_schema
mysql -u <username> -p<password> $DBNAME -B -e "SELECT COLUMN_NAME FROM information_schema.COLUMNS C WHERE table_name = '$TABLE';" | awk '{print $1}' | grep -iv ^COLUMN_NAME$ | sed 's/^/"/g;s/$/"/g' | tr '\n' ',' > $FNAME

#(2)appends newline to mark beginning of data vs. column titles
echo "" >> $FNAME

#(3)dumps data from DB into /var/mysql/tempfile.csv
mysql -u <username> -p<password> $DBNAME -B -e "SELECT * INTO OUTFILE '/var/mysql/tempfile.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' FROM $TABLE;"

#(4)merges data file and file w/ column names
cat /var/mysql/tempfile.csv >> $FNAME

#(5)deletes tempfile
rm -rf /var/mysql/tempfile.csv

Хотя это и не самое изящное решение, я уверен, что его сможет сжать в одну строку тот, кто знает SQL и/или bash немного лучше меня...

Что он делает:

  1. использует информационную схему MySQL для создания пустого CSV с заголовками столбцов
  2. добавляет дополнительную новую строку к этому пустому CSV, поэтому ваши данные начнут появляться с новой строки
  3. использует довольно стандартный запрос "SELECT * INTO OUTFILE..." для создания CSV, полного данных
  4. добавляет файл данных в файл с заголовками столбцов
  5. удаляет (временный) файл данных

Удачи, и если вы очистите его, отпишитесь о результатах!

21.01.2012

2

Я думаю, это делает то, что вы хотите. Я использую mysql 5.1.60, это выводит имена полей в первой строке. Это будет использовать «\ t» в качестве разделителя полей, я не уверен, как вместо этого попросить запятую.

echo "SELECT * FROM brand;" | mysql -uXXX -pXXX databasename > brand.tsv
13.03.2012
  • Это не заключает в кавычки поля, содержащие символ запятой, поэтому, в зависимости от характера ваших данных, конечно, потенциально может быть создан недопустимый файл CSV. 02.07.2013
  • @BobbyJack Если разделителем является табуляция, то больше не нужно беспокоиться о запятых ... 20.01.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..