
Ich muss ungefähr 20 Datenbanken in einem MySql-Server exportieren, der ungefähr 100 verschiedene Datenbanken enthält. Ist es möglich, eine Liste von Datenbanknamen mit einem Konsolenbefehl in separate Dateien zu exportieren? (unter Linux natürlich).
Antwort1
echo "show databases" | mysql -N | while read db
do
mysqldump ${db} > ${db}.sql
done
Sie können verwenden, grep
um unerwünschte Datenbanken wie mysql
und zu entferneninformation_schema
Antwort2
Erstellen Sie eine Textdatei mit dem Namen jeder Datenbank, die Sie sichern möchten, in einer eigenen Zeile
z.B
db1
reports
Verwenden Sie dann ein Skript wie dieses
#!/bin/bash
ERRORS=0
while read db
do
echo "Processing $db"
mysqldump -u root -p365576dx "$db" >"$db".sql
EXITSTATUS=$?
if [ "$ERRORS" -eq "0" -a "$EXITSTATUS" -ne "0" ]
then
ERRORS="$EXITSTATUS"
fi
done<dbstodump
if [ "$ERRORS" -ne "0" ]
then
echo "Errors occurred see above for details"
exit 1
fi
Antwort3
Die einfachste Lösung wäre eine einfache For-Schleife direkt in der Befehlszeile. In meinen Beispielen möchte ich die Datenbanken cars
, animals
und exportieren computers
.
for db in cars animals computers ; do mysqldump -uuser -ppassword "$db" > "$db.sql" ; done