Archiv verlassen und diese Seite im Standarddesign anzeigen : Datentransfer verschiedener Datenbanken
Hallo,
Also ich habe folgendes Problem:
Ich muss Daten von einer mysql_db in eine andere transferieren, welche auf einem anderen Server liegen.
Als Handycap haben die DB's noch verschiedene Strukturen, welches das kleinere Problem darstellt.
Es geht nicht darum, das ihr das komplett für mich lößt, aber vielleicht hat ja einer 'nen grundsätzlichen Ansatz für mich wie ich die Datenbankaufrufe
in einem php-script voneinander trennen kann und die daten transferiert werden können.
Ich hoffe ihr könnt mir helfen.
Danke im vorraus
Gruß Tobias
mach es doch mit hilfe von phphmyadmin (http://www.php-resource.de/news.php?cat=lesen&NewsID=226). Einfach einen DUMP aller Tabellen erstellen die du dann mit ebenfalls phphmyadmin auf deiner neuen DB wieder einlesen kannst.
Cu
Hallo Berni,
Die Datensätze sind leider zu groß um sie mal eben über einen dump auszulesen. Dann ist da noch das Problem, das ich beim neu einlesen die Daten in verschiedene (andere) Tabellenstrukturen übersetzen muss.
Gruß Tobias
dann bleibt dir wohl nur noch die Möglichkeit selber ein kleines Programm zuschreiben und "kleine" Dumps zu machen.
Das ändern der Tabellenstruktur würde ich noch der Quelldatenbank machen!
Gruß
Berni
Hallo Berni,
Kann mann also keine verschiedenen DB-Aufrufe in einem Script machen ohne das diese sich gegenseitig
behindern?
Gruß Tobias
wenn du Zugriff auf beide Rechner hast, ist das kein Problem.
Ich hatte mal das Probelm bei Puretec, dort hat das nicht funktioniert!
Kommt auf einen Versuch drauf an!
berni
Hallo nochmal,
Also ich habe jetzt ein kleines Script geschrieben, mitdem es soweit auch gut klappt, Nur wenn ich das ganze mit über 4000 Datensätzen ausführen will, werden davon ca. 2500 richtig transferiert und danach
bricht es ab und ich bekomme folgende Meldung:
"Fatal error: Maximum execution time of 30 seconds exceeded in c:\program files\apache group\apache\htdocs\db\transfer.php on line 82"
Was soll das? Das habe ich doch garnicht bestellt!
Hat jemand vielleicht 'ne Ahnung?
Gruß Tobias
Das ist natürlich fies! Damit ein einzelnes Skript nicht zuviele Ressourcen auf dem Server frisst, gibt es ein Speicherbenutzungs- und Laufzeitlimit für PHP-Skripte. Du musst Deinen Provider bitten, dieses Limit hochzusetzen (in der PHP.ini, max_execution_time), oder den Job in mehrere Teilstücke zu trennen, die unter 30 Sekunden benötigen.
mySQL legt seine Datenbanken auf File-Ebene ab. D.h. jede Tabelle einer Datenbank ist in einer Datei gespeichert, der Name der Datenbank ist der Name des Verzeichnisses, in dem die Dateien liegen.
Wenn du auf beiden Servern die gleiche mySQL-Version hast, kannst du einfach (nach dem Anlegen der DB im phpMyAdmin - wegen der Rechte!) die Tabellen-Dateien rüberkopieren. Nicht vergessen, hinterher Besitzer/Gruppe/Zugriffsrechte der Dateien so zu ändern, daß mySQL damit was anfangen kann.
Hallo pekka,
An angegebenem Pfad über Phpinfo() habe ich keine PHP.ini ! Ist die irgendwo anders versteckt? Habe überall gesucht, aber nichts!
Gruß Tobias
Probiers mal im windows- oder im windows/system-Verzeichnis! Wenn sich da nix findet, such mal nach einer Datei namens php.ini-dist und benenn sie in php.ini um. Dort findest Du dann auch die max-execution-time-Zeile. Wenn keine php.ini da ist, verwendet php m.W. die Standardeinstellungen.
Hallo pekka,
Oh ein Missverständniss!
Der Server ist auf Unix installiert !
Auf meinem Windowsrechner weiß ich wo die Php.ini
liegt. Bei Unix? Gibt es da überhaupt eine Php.ini oder stehen die Einstellungen dort an anderer Stelle?
Gruß Tobias
Das Time-Limit kannst du auch innerhalb eines PHP-Skriptes setzen. set_time_limit ($sekunden) setzt bei jedem Aufruf auch den Timer zurück.
Baust du set_time_limit also in die Schleife ein, kann dein Skript bis in alle Ewigkeit laufen.
|