Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
[MySQL 4.0] Tabellen gruppiert sichern [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[MySQL 4.0] Tabellen gruppiert sichern


 
Olaf123
16-12-2006, 14:24 
 
Hallo !

Ich habe eine mysql-Datenbank auf einem debian-Webserver, die aus Tabellen mit folgendem Schema besteht:

tab_1_a
tab_1_b
tab_1_c
tab_2_a
tab_2_b
tab_2_c
tab_3_a
tab_3_b
tab_4_a
...

Der Name ist also immer tab_x_y.
"x" bezeichnet die nächste zusammengehörige Gruppe. Die Gruppen haben teils unterschiedliche Anzahl "y", siehe oben: tab_1_ hat a,b,c (also 3 Tabellen), tab_3_ dagegen hat nur a,b (also 2 Tabellen).

Ich möchte diese Daten nun nicht alle in einer *.sql sichern, sondern automatisch, Gruppe für Gruppe (Gruppe 1 lesen, als sql speichern, Gruppe 2 lesen, als sql speichern usw.) nach dem Schema

tab_1.sql
tab_2.sql
tab_3.sql
...

Wie kann ich das realisieren ?
(Hinweis: es sind sehr viele Tabellen/Gruppen, das ganze läuft also mehrere Stunden)

Gruß
Olaf

 
TobiaZ
16-12-2006, 16:53 
 
verstehe ich dich richtig, das du mit *.sql-Datei "SQL-Dumps" meinst?

 
Olaf123
16-12-2006, 22:43 
 
Original geschrieben von TobiaZ
verstehe ich dich richtig, das du mit *.sql-Datei "SQL-Dumps" meinst?
Ja.
Passieren soll folgendes:

aus
tab_1_a + tab_1_b + tab_1_c
soll werden
--> tab_1.sql

aus
tab_2_a + tab_2_b + tab_2_c
soll werden
--> tab_2.sql

aus
tab_3_a + tab_3_b
soll werden
--> tab_3.sql

usw...

Natürlich könnte man auch alle Tabellen von Hand sichern, aber jede Gruppe tab_x_y hat ca. 30 einzelne Tabellen, und es gibt eine sehr, sehr große Anzahl Gruppen, da müsste ich im Oktober anfangen, um im Dezember fertig zu werden.

Ich benötige also
1. einen Befehl in der Art von
mysqldump -u USERNAME -p tab_1_a > tab_1_a.sql
nur halt so, dass nicht nur tab_1_a, sondern alle tab_1_(a,b,c,...) in eine tab_1.sql gesichert werden, und

2. dies nicht nur alle a,b,c.. usw beinhaltet, sondern in einer Schleife läuft, die tab_1 dann tab_2, dann tab_3 usw. abarbeitet bzw. in eine jeweilige *.sql packt. Also letztendlich ein kleines Script mit einer Schleife die ungefähr folgendes macht, ich versuchs mal mit meinen 80er-Jahre Basic-Resten (nicht mehr viel von übrig) zu stilisieren:

1. (n1)=1
2. mysqldump -u USERNAME -p PASSWORT tab_(n1)_(n2) > tab_(n1).sql
3. (n1)=(n1)+1
4. if (n1) = NICHT_MEHR_VORHANDEN then weiter zu Zeile 6
5. zurück zur Zeile 2
6. stop

Das _könnnnnte_ ich evtl. noch hinbekommen, aber spätestens bei dem Teil für _a,b,c usw. (also oben n2), der in meinem Beispiel ganz fehlt, wüsste ich nicht mehr weiter.

Gruß
Olaf

 
TobiaZ
17-12-2006, 11:43 
 
bin mir nicht sicher, ob sql an dieser stelle wildcards erlaubt, dann biste schonmal ein ganzes stück weiter.

ansonsten musst du mit php alle tabellen raussuchen, diese entsprechend gruppieren und dann die backup queries erstellen und senden.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:06 Uhr.