Zuerst kann ich Ihnen die Antwort für eine geben Tabelle:
Das Problem mit all diesen INTO OUTFILE
oder --tab=tmpfile
(und -T/path/to/directory
) Antworten ist, dass mysqldump ausgeführt werden muss auf demselben Server als MySQL-Server und mit diesen Zugriffsrechten.
Meine Lösung bestand einfach darin, mysql
zu verwenden (nicht mysqldump
) mit dem -B
Parameter, fügen Sie die SELECT-Anweisung mit -e
ein , massieren Sie dann die ASCII-Ausgabe mit sed
, und endet mit einer CSV-Datei mit einer Header-Feldzeile:
Beispiel:
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","passwort","ordner","email""8","mariana","xxxxxxxxxx","mariana","""3","squaredesign","xxxxxxxxxxxxxxxxxx"," squaredesign","[email protected] ""4","miedziak","xxxxxxxxxx","miedziak","example@sqldat .com ""5","Sarko","xxxxxxxxx","Sarko","""6","LogitransPoland","xxxxxxxxxxxxxxx","LogitransPoland","""7","Amos","xxxxxxxxxxxxxxxxxxxx"," Amos",""9","Annabelle","xxxxxxxxxxxxxxx","Annabelle",""11","BrandfathersandSons","xxxxxxxxxxxxxxxxx","BrandfathersAndSons","""12","ImagineGroup", "xxxxxxxxxxxxxxxx","ImagineGroup","""13","EduSquare.pl","xxxxxxxxxxxxxxxxxx","EduSquare.pl","""101","tmp","xxxxxxxxxxxxxxxxxxxxx","_","example.comexample.com "
Fügen Sie eine > outfile.csv
hinzu am Ende dieses Einzeilers, um Ihre CSV-Datei für diese Tabelle zu erhalten.
Rufen Sie als Nächstes eine Liste mit allen ab Ihre Tabellen mit
mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"
Von dort aus ist es nur noch ein Schritt, um beispielsweise in der Bash-Shell eine Schleife zu erstellen, um diese Tabellen zu durchlaufen:
for tb in $(mysql -u username -ppassword dbname -sN -e "SHOW TABLES;"); do
echo .....;
done
Zwischen do
und ; done
Fügen Sie den langen Befehl ein, den ich oben in Teil 1 geschrieben habe, aber ersetzen Sie Ihren Tabellennamen durch $tb
stattdessen.