89

MySQL のすべてのテーブルを CSV 形式でダンプする必要があります。

すべてのテーブルのすべての行を CSV 形式で出力するコマンドはありmysqldumpますか?

4

7 に答える 7

132

まず、 1 つのテーブルについて答えを示します。

これらすべてのINTO OUTFILEor --tab=tmpfile(and -T/path/to/directory) 回答の問題は、MySQL サーバーと同じサーバーでmysqldump を実行し、それらのアクセス権を持っている必要があることです。

私の解決策は、パラメーターでmysql( not mysqldump )を使用-Bし、 で SELECT ステートメントをインライン化し-e、次に で ASCII 出力をマッサージしsed、ヘッダー フィールド行を含む CSV で終了することでした。

例:

 mysql -B -u username -p password database -h dbhost -e "SELECT * FROM accounts;" \
 | sed "s/\"/\"\"/g;s/'/\'/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g"

"id","login","password","folder","email" "8","mariana","xxxxxxxxxx","mariana","" "3","squaredesign","xxxxxxxxxxxxxxxxx"," squaredesign","mkobylecki@squaredesign.com" "4","miedziak","xxxxxxxxxx","miedziak","miedziak@mail.com" "5","Sarko","xxxxxxxxx","Sarko"," " "6","Logitrans ポーランド","xxxxxxxxxxxxxx","LogitransPoland","" "7","Amos","xxxxxxxxxxxxxxxxxxxx","Amos","" "9","Annabelle","xxxxxxxxxxxxxxx", "アナベル""" "11","Brandfathers and Sons"、"xxxxxxxxxxxxxxxxx"、"BrandfathersAndSons"、"" "12"、"Imagine Group"、"xxxxxxxxxxxxxx"、"ImagineGroup"、"" "13"、"EduSquare.pl"、"xxxxxxxxxxxxxxxxxx"、"EduSquare .pl","" "101","tmp","xxxxxxxxxxxxxxxxxxxxx","_","WOBC-14.squaredesign.atlassian.net@yoMama.com"_","WOBC-14.squaredesign.atlassian.net@yoMama.com"_","WOBC-14.squaredesign.atlassian.net@yoMama.com"

> outfile.csvそのワンライナーの最後にa を追加して、そのテーブルの CSV ファイルを取得します。

次に、すべてのテーブルのリストを取得します

mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"

そこから、たとえば Bash シェルでこれらのテーブルを反復処理するループを作成するのは、あと 1 つのステップです。

 for tb in $(mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"); do
     echo .....;
 done

との間に、上記のパート 1 で書いた長いコマンドdo; done 挿入しますが、$tb代わりにテーブル名を置き換えます。

于 2014-08-21T13:31:35.977 に答える
34

このコマンドは、/path/to/directory table_name.sqltable_name.txtに 2 つのファイルを作成します。

SQL ファイルにはテーブル作成スキーマが含まれ、txt ファイルにはコンマで区切られたフィールドを持つ mytable テーブルのレコードが含まれます。

mysqldump -u username -p -t  -T/path/to/directory dbname table_name --fields-terminated-by=','
于 2013-01-16T11:07:46.960 に答える
9

他の人にもこの問題があったようで、現在、mysqldump の出力を CSV ファイルに変換するための簡単な Python スクリプトがあります。

wget https://raw.githubusercontent.com/jamesmishra/mysqldump-to-csv/master/mysqldump_to_csv.py
mysqldump -u username -p --host=rdshostname database table | python mysqldump_to_csv.py > table.csv
于 2015-01-27T10:47:30.140 に答える
1

dbForge Studio for MySQL のデータ エクスポート ツールを使用して行うこともできます。

一部またはすべてのテーブルを選択して、CSV 形式にエクスポートできます。

于 2012-08-21T06:01:20.087 に答える