Измислих начин да се наложи ръчно да въвеждам тези имена, стига да използвате 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 малко по-добре от мен...
Това, което прави е:
- използва информационната схема на MySQL за създаване на празен CSV със заглавки на колони
- добавя допълнителен нов ред към този празен CSV, така че данните ви ще започнат да се показват на нов ред
- използва доста стандартна заявка „SELECT * INTO OUTFILE...“, за да създаде CSV пълен с данни
- прибавя файла с данни към файла със заглавки на колони
- изтрива (временния) файл с данни
Успех и ако го почистите, публикувайте резултатите си!