Först kan jag ge dig svaret för en tabell:
Problemet med alla dessa INTO OUTFILE eller --tab=tmpfile (och -T/path/to/directory ) svar är att det kräver att mysqldump körs på samma server som MySQL-server och har dessa åtkomsträttigheter.
Min lösning var helt enkelt att använda mysql (inte mysqldump ) med -B parameter, infoga SELECT-satsen med -e , massera sedan ASCII-utgången med sed , och avsluta med CSV inklusive en rubrikfältrad:
Exempel:
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","lösenord","mapp","e-post""8","mariana","xxxxxxxxxx","mariana","""3","squaredesign","xxxxxxxxxxxxxxxxxx"," squaredesign"," .com ""5","Sarko","xxxxxxxxxx","Sarko","""6","LogitransPoland","xxxxxxxxxxxxxx","LogitransPoland","""7","Amos","xxxxxxxxxxxxxxxxxxxx"," Amos","""9","Annabelle","xxxxxxxxxxxxxxxx","Annabelle","""11","Brandfathers andSons","xxxxxxxxxxxxxxxxxx","BrandfathersAndSons","""12","ImagineGroup", "xxxxxxxxxxxxxxxx","ImagineGroup","""13","EduSquare.pl","xxxxxxxxxxxxxxxxxx","EduSquare.pl","""101","tmp","xxxxxxxxxxxxxxxxxxxxxx","_","datle99919de9e99dsqdecom3999dcom "
Lägg till en > outfile.csv i slutet av den en-liner, för att få din CSV-fil för den tabellen.
Sedan får du en lista över alla dina bord med
mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"
Därifrån är det bara ett steg till att göra en loop, till exempel i Bash-skalet för att iterera över dessa tabeller:
for tb in $(mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"); do
echo .....;
done
Mellan do och ; done infoga det långa kommandot jag skrev i del 1 ovan, men ersätt ditt tabellnamn med $tb istället.