Eine DB aus mysqldump (--all-databases) wiederherstellen
Eine DB aus mysqldump (--all-databases) wiederherstellen
Hallo
Ich habe ein Backup mit mysqldump --all-databases erstellt.
Nun will ich aber nur eine Datenbank und nicht alle wieder herstellen.
Kann ich irgendwie die "Datenbank" aus dem SQL Dump "ausschneiden" und in ein neues SQL File pipen?
Hoffe mir kann jemand helfen
Danke
Ich habe ein Backup mit mysqldump --all-databases erstellt.
Nun will ich aber nur eine Datenbank und nicht alle wieder herstellen.
Kann ich irgendwie die "Datenbank" aus dem SQL Dump "ausschneiden" und in ein neues SQL File pipen?
Hoffe mir kann jemand helfen
Danke
hi,
ja das ist doch kein problem, du musst doch nur die zusammenhängenden befehle rausschneiden und in eine neue datei zu kopieren. die datenbank abschnitt beginnen ja auch immer mit
mfg
mauser
ja das ist doch kein problem, du musst doch nur die zusammenhängenden befehle rausschneiden und in eine neue datei zu kopieren. die datenbank abschnitt beginnen ja auch immer mit
Code: Alles auswählen
--
-- Current Database: db_name
--
mauser
hi.
natürlich geht das, darum habe ich doch gesagt das die datenbanken immer durch dieses stück text getrennt sind,welches ich oben schonmal erwähnt habe. du musst es nur auf den datenbanknamen matchen lassen, und danach schauen wann die nächste datenbank wieder anfängt. ich würde dir da zu perl raten, aber das ist ja geschmackssache..
mfg
mauser
natürlich geht das, darum habe ich doch gesagt das die datenbanken immer durch dieses stück text getrennt sind,welches ich oben schonmal erwähnt habe. du musst es nur auf den datenbanknamen matchen lassen, und danach schauen wann die nächste datenbank wieder anfängt. ich würde dir da zu perl raten, aber das ist ja geschmackssache..
mfg
mauser
Vorweg ich hab kaum Ahnung in PERL, hab mir das nun durch ein paar Readme Datein von Perl zusammen gebaut
Leider erstellt er immer nur die Datei DATENBANKNAMEN.sql mit dem Inhalt: "-- Current Database: .." mehr aber nicht.
Wo ist denn da mein Fehler?
EDIT Habe glaube meinen Fehler
Baue das mal um
EDIT2
So gehts nun
Leider erstellt er immer nur die Datei DATENBANKNAMEN.sql mit dem Inhalt: "-- Current Database: .." mehr aber nicht.
Wo ist denn da mein Fehler?
Code: Alles auswählen
#!/usr/bin/perl
open(MYSQLDAT, "<data.sql") || die "Datei nicht gefunden\n";
while(<MYSQLDAT>)
{
chop;
($database) = ($_ =~ /-- Current Database: (.*)/);
open(DB ,">>databases/$database.sql") || die "Fehler $!";
print DB "$_\n";
close(DB);
}
close(MYSQLDAT);
Baue das mal um
EDIT2
So gehts nun
Code: Alles auswählen
#!/usr/bin/perl
open(MYSQLDAT, "<data.sql") || die "Datei nicht gefunden\n";
while(<MYSQLDAT>)
{
if (($database) = ($_ =~ /-- Current Database: (.*)/)) {
$datenbank = $database;
}
open(DB ,">>databases/$datenbank.sql") || die "Fehler $!";
print DB "$_";
close(DB);
}
close(MYSQLDAT);
hi,
wie wärs damit ?
nur mal so als grundgerüst..
mfg
mauser
wie wärs damit ?
Code: Alles auswählen
1 #!/bin/sh
2 mysqlshow > tmp
3 rows=$(cat tmp | wc -l)
4 let rows=$rows-3
5 let rows2=$rows-1
6 temp=$(cat tmp | tail -n $rows | head -n $rows2)
7 for test in $temp
8 do
9 if [ "$test" != "|" ]; then
10 mysqldump $test > $test.sql
11 fi
12 done
mfg
mauser