web-dev-qa-db-ja.com

MySqlテーブルをフィールド名(別名ヘッダーまたは列名)を含むテキストファイルにエクスポート/ダンプする方法

MySqlのインタープリターでは、フィールド名とともにテーブルを画面にダンプするのは非常に簡単です。

テーブルをタブ配信またはCSV出力ファイルにエクスポートする簡単な方法はないようです含むその列ヘッダー。

別の言語でプログラムを作成せずに、SQLまたはLinuxコマンドラインのみを使用してこれを実行しようとしています。

ありがとうございました

16
Dan Goldstein

クエリをコマンドラインクライアントにパイプすると、最初の行として列名を含むタブ区切りのリストが出力されます

$ 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
20
Vinko Vrsalovic

この小さなスクリプトはそれを行う必要があります:

--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;
9
cafe876

私はこの方法でそれを達成しました:

echo "select * from table"| mysql database -B -udbuser -puser_passwd | sed s/\\t/,/g > query_output.csv

Mysqlの-Bオプションは、sedを使用してコンマに変換されるタブで列を区切ります。ヘッダーも生成されることに注意してください。

3
aizquier

mysqldump コマンドを使用してこれを行うことができます。 --tabおよび--xmlオプションを確認してください。

1
Dana the Sane

SELECT ... INTO OUTFILEを使用して、多数のテーブルの内容を.csvファイルにエクスポートすることを自動化する手順を作成しました。このようなものが必要な場合は、以下を参照してください

http://lifeboysays.wordpress.com/2012/06/23/mysql-how-to-export-data-to-csv-with-column-headers/

これは、cafe876で説明されている方法を使用しますが、一連のテーブルの1つまたは全体で機能します。さらに、使用する区切り文字と引用符を設定できます。

0
Lifeboy

上記のコマンドを使用し、要件に応じて変更しました。
wordpress mysqlデータベースのテキストファイルからパスワード列を取得する必要がありました。そのためには、次のコマンドを使用しました

echo "select user_pass from wp_users"| mysql -uroot -proot wp_database > passwordList.txt
0
aiffin