17

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

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

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

ありがとうございました

4

6 に答える 6

20

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

$ 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
于 2008-11-04T19:07:14.977 に答える
9

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

-- 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;
于 2012-04-02T12:29:28.637 に答える
3

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

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

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

于 2012-06-22T17:08:01.957 に答える
1

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

于 2008-11-04T19:07:50.173 に答える
0

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

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

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

于 2012-06-23T20:17:59.713 に答える