Pertama, saya bisa memberikan jawaban untuk satu tabel:
Masalah dengan semua INTO OUTFILE
ini atau --tab=tmpfile
(dan -T/path/to/directory
) jawabannya adalah perlu menjalankan mysqldump di server yang sama sebagai server MySQL, dan memiliki hak akses tersebut.
Solusi saya hanya menggunakan mysql
(tidak mysqldump
) dengan -B
parameter, sebariskan pernyataan SELECT dengan -e
, lalu pijat output ASCII dengan sed
, dan diakhiri dengan CSV termasuk baris bidang header:
Contoh:
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","contoh@sqldat .com ""5",,"Sarko",,"xxxxxxxxx",,"Sarko","""6",,"LogitransPolandia",,"xxxxxxxxxxxxxxxxx",,"LogitransPolandia","""7",,"Amos",,"xxxxxxxxxxxxxxxxxxxx"," Amos","""9",,"Annabelle",,"xxxxxxxxxxxxxxxx",,"Annabelle","""11",,"Brandfathers and Sons",,"xxxxxxxxxxxxxxxxx",,"BrandfathersAndSons",,"""12",,"ImagineGroup", "xxxxxxxxxxxxxxxx",,"ImagineGroup","""13",,"EduSquare.pl",,"xxxxxxxxxxxxxxxxx",,"EduSquare.pl","""101",,"tmp",,"xxxxxxxxxxxxxxxxxxxxx",,"_","contoh sqldat.com "
Tambahkan > outfile.csv
di akhir one-liner itu, untuk mendapatkan file CSV Anda untuk tabel itu.
Selanjutnya, dapatkan daftar semua meja Anda dengan
mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"
Dari sana, hanya satu langkah lagi untuk membuat loop, misalnya, di shell Bash untuk mengulangi tabel tersebut:
for tb in $(mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"); do
echo .....;
done
Antara do
dan ; done
masukkan perintah panjang yang saya tulis di Bagian 1 di atas, tetapi ganti nama tabel Anda dengan $tb
sebagai gantinya.