まず、1つの答えをお伝えします テーブル:
これらすべてのINTO OUTFILE
の問題 または--tab=tmpfile
(および-T/path/to/directory
)答えは、 mysqldumpを実行する必要があるということです 同じサーバー上 MySQLサーバーとして、それらのアクセス権を持っています。
私の解決策は、単にmysql
を使用することでした ( mysqldump
)-B
を使用 パラメータ、SELECTステートメントを-e
でインライン化します 、次にsed
でASCII出力をマッサージします 、ヘッダーフィールド行を含む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 "、" [email protected] "" 4 "、" miedziak "、" xxxxxxxxxx "、" miedziak "、" example @ sqldat .com "" 5 "、" Sarko "、" xxxxxxxxx "、" Sarko "、" "" 6 "、" LogitransPoland "、" xxxxxxxxxxxxxx "、" LogitransPoland "、" "" 7 "、" Amos "、" xxxxxxxxxxxxxxxxxxxx "、" Amos "、" "" 9 "、" Annabelle "、" xxxxxxxxxxxxxxxx "、" Annabelle "、" "" 11 "、" Brandfathers andSons "、" xxxxxxxxxxxxxxxxx "、" BrandfathersAndSons "、" "" 12 "、" ImagineGroup "、 "xxxxxxxxxxxxxxxx"、 "ImagineGroup"、 "" "13"、 "EduSquare.pl"、 "xxxxxxxxxxxxxxxxx"、 "EduSquare.pl"、 "" "101"、 "tmp"、 "xxxxxxxxxxxxxxxxxxxxx"、 "_"、 " example@sqldat。 "
> outfile.csv
を追加します そのワンライナーの最後に、そのテーブルの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
do
の間 および; done
上記のパート1で書いた長いコマンドを挿入しますが、テーブル名を$tb
に置き換えます 代わりに。