Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Sichern Sie alle Tabellen im CSV-Format mit 'mysqldump'

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.