Datenbanken abgleichen
nobbi
- datenbank
Hallo,
eine Onlinedatenbank (mysql) bei einem Serviceprovider und eine lokale (mssql) sollen mehrmals täglich abgeglichen werden.
Am Besten wäre eine Lösung mit PHP.
Ich dachte mir auf dem Server(online) liegt ein Script, das die entsprechenden Tabellen ausliest und in einer CSV-Form darstellt.
Ein anderes Script auf dem lokalen Server schubst dieses Script an, liest die Daten und schiebt sie via SQL oder ODBC in die lokale Datenbank.
Ebenso wäre der umgekehrte Weg denkbar.
Ist das eine brauchbare Lösung oder hat jemand eine bessere Idee?
Gruß
Norbert
Am Besten wäre eine Lösung mit PHP.
Ist das eine brauchbare Lösung oder hat jemand eine bessere Idee?
CSV ist, um die Struktur einer MySQL-Tabelle (oder gar Datenbank) abzubilden eine ziemlich absurde Idee.
Ein Dump ist da wesentlich schlauer und zwar direkt per MySQL ohne PHP.
Ein Dump ist da wesentlich schlauer und zwar direkt per MySQL ohne PHP.
mysqldump [options] --databases db_name > filename.sql
mysql db_name < filename.sql
Und wenn die Tabellen unterschiedliche Strukturen haben?
Ich hätte dazu sagen sollen, dass die lokale Datenbank an einer WAWI hängt.
An der Online DB hängt ein Shop.
Naturgemäss brauchen nur bestimmte Felder in bestimmten Tabellen abgeglichen werden.
Gruß
Und wenn die Tabellen unterschiedliche Strukturen haben?
Dann geht das so natürlich nicht - obenstehendes erzeugt eine 1:1 Kopie
Ich hätte dazu sagen sollen, dass die lokale Datenbank an einer WAWI hängt.
An der Online DB hängt ein Shop.
Naturgemäss brauchen nur bestimmte Felder in bestimmten Tabellen abgeglichen werden.
Ja, wäre nicht schlecht gewesen - dh du willst praktisch folgendes:
In der Früh werden alle gänderten Artikel, Bilder, Texte, Preise und Lagerstände in den Shop geschossen.
Am Abend werden Bestellungen usw. Abgeholt.
Eine XML-Schnittstelle die per cronjob läuft ist sicher keine schlechte Idee.
Eine XML-Schnittstelle die per cronjob läuft ist sicher keine schlechte Idee.
Kann ich auf dem Server beim Provider einen cronjob starten?
Irgendwie kann ich mir das nicht vorstellen.
Kann ich auf dem Server beim Provider einen cronjob starten?
Ich weiß es nicht ob du die Möglichkeit hast - ich hatte noch nicht solchen Fall bei dem ich etwas in die Richtung machen musste und nicht a) selbst zugriff auf den Server hatte oder b) den der das macht persönlich erreichen konnte.
Auf das lokale System mit der Warenwirtschaft hast du aber Zugriff? Im schlimmsten Fall fürhst du von dort aus einen fsockopen (oder vergleichbares) durch und postets die XML-Daten.
Es kommt auf die Datenmenge an - ich das vor einiger Zeit für einen Shop umgesetzt bei dem täglich 1x in der Nacht etwa 100 MB Daten (XML) synchronisiert wurden - das ist für einen HTTP-POST dann etwas unpraktikabel - in dem Fall hat ein Cron-Job das XML-File per FTP abgeholt (wget) und dann ein Script angestoßen.
Du könntest es umgekehrt machen - lade per cron-job ein XML-File hoch und stoße dann ein Script (z.B. per gewöhnlichem GET-Request). Natürlich entsprechend abgesichern (locking der Datenbank, Beschränkung auf die IP des WAWI-Rechners usw).
Hallo suit,
CSV ist, um die Struktur einer MySQL-Tabelle (oder gar Datenbank) abzubilden eine ziemlich absurde Idee.
Ein Dump ist da wesentlich schlauer und zwar direkt per MySQL ohne PHP.
aber hier nicht brauchbar, da es um einen Abgleich zwischen MySQL und MS SQL-Server geht.
Freundliche Grüße
Vinzenz
aber hier nicht brauchbar, da es um einen Abgleich zwischen MySQL und MS SQL-Server geht.
Der Dump lässt sich entsprechend bearbeiten, so extrem abweichend ist die Syntax auch nicht - von einigen Ausnahmen abgesehen. z.B. TOP vs. LIMIT usw.