Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL изхвърля в CSV текстови файлове с имена на колони в горната част?

Измислих начин да се наложи ръчно да въвеждам тези имена, стига да използвате 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. изтрива (временния) файл с данни

Успех и ако го почистите, публикувайте резултатите си!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SELECT срещу UPDATE производителност с индекс

  2. Изберете най-новия ред с GROUP BY в MySQL

  3. MYSQL PHP Няма избрана база данни - не мога да намеря грешка

  4. Присъединяване на резултата от две заявки mysql

  5. Как да промените Root парола на MySQL или MariaDB в Linux