MySQL のすべてのテーブルを CSV 形式でダンプする必要があります。
すべてのテーブルのすべての行を CSV 形式で出力するコマンドはありmysqldump
ますか?
まず、 1 つのテーブルについて答えを示します。
これらすべてのINTO OUTFILE
or --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
代わりにテーブル名を置き換えます。
このコマンドは、/path/to/directory table_name.sqlとtable_name.txtに 2 つのファイルを作成します。
SQL ファイルにはテーブル作成スキーマが含まれ、txt ファイルにはコンマで区切られたフィールドを持つ mytable テーブルのレコードが含まれます。
mysqldump -u username -p -t -T/path/to/directory dbname table_name --fields-terminated-by=','
他の人にもこの問題があったようで、現在、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
dbForge Studio for MySQL のデータ エクスポート ツールを使用して行うこともできます。
一部またはすべてのテーブルを選択して、CSV 形式にエクスポートできます。