MySqlのインタープリターでは、フィールド名とともにテーブルを画面にダンプするのは非常に簡単です。
テーブルをタブ配信またはCSV出力ファイルにエクスポートする簡単な方法はないようです含むその列ヘッダー。
別の言語でプログラムを作成せずに、SQLまたはLinuxコマンドラインのみを使用してこれを実行しようとしています。
ありがとうございました
クエリをコマンドラインクライアントにパイプすると、最初の行として列名を含むタブ区切りのリストが出力されます
$ echo "select * from surveys limit 5" | mysql -uroot -pGandalf surveys
phone param1 param2 param3 param4 p0 p1 p2 p3 audio4 code time
XXXXXXXXX 2008-07-02 11:17:23 XXXXXXXX SAT - - - - - ERROR 2008-07-02 12:18:32
XXXXXXXXX 2008-07-02 11:22:52 XXXXXXXX SAT - - - - - COLGADO 2008-07-02 12:04:29
XXXXXXXXX 2008-07-02 11:41:29 XXXXXXXX SAT - - - - - COLGADO 2008-07-02 12:07:22
XXXXXXXXX 2008-07-02 12:16:19 XXXXXXXX SAT 1 1 1 9 XXXXXXXXX_4.wav OK 2008-07-02 16:14:27
XXXXXXXXX 2008-07-02 08:21:25 XXXXXXXX SAT 1 1 1 1 XXXXXXXXX_4.wav OK 2008-07-02 12:29:40
この小さなスクリプトはそれを行う必要があります:
--1。ここでテーブルと出力ファイルを選択します/これが唯一の入力である必要があります
select 'mytable' into @tableName;
select 'c://temp/test.csv' into @outputFile;
--2。クエリに適合する形式で列名を取得します
select group_concat(concat("'",column_name, "'")) into @columnNames from information_schema.columns
where table_name=@tableName;
--3。クエリを作成します
SET @query = CONCAT(
"select * from
((SELECT ",@columnNames,")
UNION
(SELECT * FROM `",@tableName,"`)) as a
INTO OUTFILE '", @outputFile, "'");
-4。クエリを実行します
PREPARE stmt FROM @query;
EXECUTE stmt;
私はこの方法でそれを達成しました:
echo "select * from table"| mysql database -B -udbuser -puser_passwd | sed s/\\t/,/g > query_output.csv
Mysqlの-Bオプションは、sedを使用してコンマに変換されるタブで列を区切ります。ヘッダーも生成されることに注意してください。
mysqldump コマンドを使用してこれを行うことができます。 --tabおよび--xmlオプションを確認してください。
SELECT ... INTO OUTFILE
を使用して、多数のテーブルの内容を.csvファイルにエクスポートすることを自動化する手順を作成しました。このようなものが必要な場合は、以下を参照してください
http://lifeboysays.wordpress.com/2012/06/23/mysql-how-to-export-data-to-csv-with-column-headers/ 。
これは、cafe876で説明されている方法を使用しますが、一連のテーブルの1つまたは全体で機能します。さらに、使用する区切り文字と引用符を設定できます。
上記のコマンドを使用し、要件に応じて変更しました。
wordpress mysqlデータベースのテキストファイルからパスワード列を取得する必要がありました。そのためには、次のコマンドを使用しました
echo "select user_pass from wp_users"| mysql -uroot -proot wp_database > passwordList.txt