MySQL 5 以降を実行している限り、これらの名前を手動で入力しなければならないことを回避する方法を見つけました。これは、UNIX コマンド ラインで実行するための bash スクリプトとして書かれています。
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 を作成します
- その空のCSVに余分な改行を追加して、データが新しい行に表示されるようにします
- 非常に標準的な「SELECT * INTO OUTFILE...」クエリを使用して、データでいっぱいのCSVを作成します
- データファイルを列ヘッダー付きのファイルに追加します
- (一時) データファイルを削除します
頑張ってください。きれいになったら、結果を投稿してください。