SQLDUMP: 1file pro Database [gelöst]

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Benutzeravatar
magoo
Beiträge: 166
Registriert: 02.05.2005 11:06:58

SQLDUMP: 1file pro Database [gelöst]

Beitrag von magoo » 27.03.2006 11:04:55

Ich will ein Tool mit dem er pro Datenbank eine eigene SQL Dump file erzeugt. per Hand weiss ich wie es geht - nur soll das halt mit allen Datenbanken gehen - da ich über 1100 Datenbanken haben bin ihc nicht gewillt das von Hand zu schreiben. Muss doch ne möglcihkeit gebeht n wie ---all-datase nur halt nicht in ein file.
Zuletzt geändert von magoo am 29.03.2006 08:47:12, insgesamt 1-mal geändert.
Bild

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 27.03.2006 11:20:00

hallo,

kann man so machen:

- ermitteln aller datenbank-namen
- for i in <datenbanknamen>
- den dump von $i erzeugen und in file $i schreiben
- done

;)
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

tapferesschneiderlein
Beiträge: 189
Registriert: 11.08.2005 09:27:01

Beitrag von tapferesschneiderlein » 27.03.2006 11:26:25

z. B. so

Code: Alles auswählen

mysql -u root -p<password> -B -e "SHOW DATABASES" | while read db; do mysqldump -u root -p<password> -B $db >$db.dump.sql; done;

Benutzeravatar
magoo
Beiträge: 166
Registriert: 02.05.2005 11:06:58

Beitrag von magoo » 29.03.2006 08:46:39

Habs so gelöst:
Dieses Script speichert alle SQL Datenbanken in einem eigenen DUMPfile

#!/bin/sh
mysqlshow > tmp
rows=$(cat tmp | wc -l)
let rows=$rows-3
let rows2=$rows-1
temp=$(cat tmp | tail -n $rows | head -n $rows2)
for test in $temp
do
if [ "$test" != "|" ]; then
mysqldump $test > $test.sql
fi
done

DANKE NOCH !
Bild

Benutzeravatar
feltel
Webmaster
Beiträge: 10477
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Beitrag von feltel » 29.03.2006 10:49:47

tapferesschneiderlein hat geschrieben:z. B. so

Code: Alles auswählen

mysql -u root -p<password> -B -e "SHOW DATABASES" | while read db; do mysqldump -u root -p<password> -B $db >$db.dump.sql; done;
Hier noch eine etwas verbesserte Version:

Code: Alles auswählen

mysql -u root -p<password> -B -e "SHOW DATABASES" | sed -e /Database/d | while read db; do mysqldump -u root -p<password> -B $db >$db.dump.sql; done;
Der Grund liegt darin da mysql die Tabelle mit den Datenbanken immer mit der Überschrift "Database" ausgibt. Bei dem Script würde dann ein Fehler ausgegeben werden da so eine DB meist nicht existiert.

Code: Alles auswählen

mysqldump: Got error: 1049: Unknown database 'Database' when selecting the database

Antworten