Philipp Hasenfratz: MySQL-Tabellen aktualisieren

Beitrag lesen

Halihallo Christl

Das BLVP benutzt Datenbanken mit Endung: .bpd (keine Ahnung was das für eins ist...), ich hab aber auch keine Ahnung welche Daten in welcher .bpd-Datenbank liegen.... Insgesamt: 148 Datenbanken mit 9,3 GB Daten.. Viel Spaß beim suchen  ;-))

Nun denn, also internes Zeug, da ist die Wahrscheinlichkeit klein auf die Daten direkt
zuzugreifen...

.rtf, .txt (als ASCII oder ANSI), .xls (´95 und ´97), dBase (welche Version weiss allein der Herr) und über die ADO-Schnittstelle auf ODBC.

Nun ja, mit txt kann man ja schnell was solides erstellen, wenn die Daten in einem
vernünftigen Format abgelegt sind. Da bräuchte man ein kleines Script, welches die Daten
aus der .txt extrahiert und in der DB speichert.

Also ist Access auch ansprechbar, aber auch hier fügt BLVP die Daten nur an und updatet nicht. somit bietet Access keinen Vorteil, im Gegentum, es ist ja nicht für Webserver gedacht.

ACK.

Es soll jeden Tag aktualisiert werden.

cron-job oder für Windows "Geplante Tasks" oder wie das Ding heisst; dann kannst du den
Traffic der Sync auf niederfrequentierte Zeiten (eg. falls der Server auch als HTTP-
Webserver fungiert) auslagern.

---

Also, ein Export in exotische Dateiformate, wie xls oder Access würde ich vermeiden.
Vorziehen würde ich .txt, da diese mit einer 4th Generation Language (Perl/PHP/ASP/VBS)
einfach zu behandeln sind. Die Datenbankanbindung kriegst du mit allen Sprachen gleich
mit. Dieses Vorgehen wäre eine Möglichkeit.
Du sagst, du möchtest die Daten einmal täglich aktualisieren. Machst du dies per Hand,
oder lässt sich dein System automatisch dazu veranlassen? - In jedem Fall ist dies ein
Bonus der dir zu gute kommt, da eine RealTime-Synchronisation der Daten im gegebenen
Kontext wohl fast verunmöglicht wird. Ich glaube, dass es kein Problem wäre hier mit
einer Zwischentabelle zu arbeiten, welche temporär alle Daten speichert. Die UPDATE's
würde ich, weil dein System sie anscheinend nicht richtig umsetzen kann, in ein
Script auslagern, welches die Daten von dieser Zwischentabelle nimmt und sie in die
Datenbank einfügt, welche vom Internet aus ansteuerbar ist.
Die beste Lösung wäre wohl immer noch, dass du dein System irgendwie dazu veranlassen
kannst, mit Primary Keys richtig umzugehen, wenn dies jedoch einfach nicht will, solltest
du in Erwägung ziehen diese Arbeit über eine selbstprogrammierte Middleware zu
realisieren.

Etwas konkreter:
Du lässt BLVP die Daten in die Tabelle ohne Primaries exportieren, dann wird ein Script
gestartet, welches diese Daten ausliest und einen REPLACE auf die Tabelle mit Primary
ausführt und nach Abschluss dieser Synchronisation die erstgenannte Tabelle komplett
leert (um beim nachsten Export keine doppelten Einträge zu haben).

Falls die exportierte .txt Datei eine einfache Struktur aufweist (eg. CSV) könntest du
auch ganz auf Scripts verzichten und versuchen die .txt per SQL-Statement in die DB
einzulesen.

Falls du mit dem Versucht BLVP->TabelleMitPrimary nicht erfolgreich bist, bleibt meiner
Meinung nach nur der Umweg über manuelle Arbeit oder der Automatisierung über ein Script.
Es sei denn, jemand kennt eine geeignete, bestehende Middleware; ich kenne leider keine.

Viele Grüsse

Philipp