Beitrag von WS (4 Beiträge) am Donnerstag, 12.Februar.2009, 14:24.
Datensätze von einer DB in die andere verschieben
Angenommen ich habe drei Datenbanken, die teilweise den gleichen Inhalt habe. Wie kann ich Datensätze von der einen Datenbank in die andere verschieben, ohne den Datensatz komplett neu einzugeben. Felder sind alle gleich.
Antworten
Beitrag von Claus (4645 Beiträge) am Donnerstag, 12.Februar.2009, 14:36.
Re: Datensätze von einer DB in die andere verschieben
Antworten
Beitrag von Marco (840 Beiträge) am Donnerstag, 12.Februar.2009, 18:55.
Re: Datensätze von einer DB in die andere verschieben
Du kannst die Datenbank im csv-Format exportieren, anschließen bei Bedarf im Excel die überflüssigen Datensätze herausschmeißen und anschließend die csv-Datei in die neue DB importieren.
Das funktioniert auch ohne Perl-Kenntnisse ;-)
Marco
Antworten
Beitrag von Claus (4645 Beiträge) am Donnerstag, 12.Februar.2009, 19:37.
Re: Re: Datensätze von einer DB in die andere verschieben
Dann kann er auch einfach nur die DB kopieren, die überflüssigen Datensätze löschen und spart sich den Im- und Export...;)
Da er nur mit "angenommen" beschrieben hat, habe auch ich nur "angenommen", daß er Datensätze von "a" nach "b" schreiben will und genau das macht man in perl mit "get" und "put"...;)
Gruß
Claus
Antworten
Beitrag von WS (4 Beiträge) am Donnerstag, 12.Februar.2009, 20:47.
Re: Re: Re: Datensätze von einer DB in die andere verschieben
Also, das Problem ist folgendes:
Ich habe eine Adress-/Infodatenbank (A) mit ca. 1000 Datensätze. Dazu kommt Datenbank B und C, die beides Teilmengen von A sind. B und C haben evtl eine kleine Schnittmenge. Ich möchte Datensätze aus der einmal angelegeten Datenbank A nach B und C kopieren. Änderungen in A sollen automatisch nach B bzw. C übertragen werden. Ist das mit Baseportal realisierbar?
Ich habe keine Ahnung von Perl....aber vielen Dank für die bisherigen Tips
Antworten
Beitrag von Marco (840 Beiträge) am Donnerstag, 12.Februar.2009, 20:53.
Re: Re: Re: Re: Datensätze von einer DB in die andere verschieben
Hallo WS,
also wenn es keine einmalige Aktion sondern ein andauernder Prozess ist, wirst Du Perl nicht herumkommen.
Ich frage mich nur, was du da fĂĽr einen Anwendungsfall umsetzt, der erfordert, dass Du Daten teilweise in 3 DB redundant halten musst.
Kannst Du das nicht in einer DB abfackeln und entsprechende Unterscheidungsfelder einbauen?
Marco
Antworten
Beitrag von WS (4 Beiträge) am Freitag, 13.Februar.2009, 09:05.
Re: Re: Re: Re: Re: Datensätze von einer DB in die andere verschieben
Danke für die bisherigen Tips. Ich möchte das Ganze noch mal etwas präzisieren. Ich habe eine Datenbank von ca. 500 Spielern, die im Laufe der letzten 6 Jahre gesichtet wurden. Einige von diesen Spielern wurden in Kadern (jugend, Junioren, evtl U18) übernommen. Ich brauche daher eine große und drei kleine Datenbanken. Die drei kleinen sind zum größten Teil Teilmengen der großen....es können aber auch Spieler in den Auswahlkadern dabei sein, die von außerhalb der großen Datenbank kommen (also nicht in der Sichtung dabei waren).
Ich will eine große Datenbank für die Sichtungen anlegen und von dort aus die redundanten Datensätze in die Sub-Datenbanken verschieben/duplizieren.
Änderungen in der großen Datenbank (z.B. E-mail) sollen sich automatisch in die Subdatenbank durchschlagen.
Desweiteren muß ich in der Lage sein, Datensätze von Sub-Jugend in Sub-Junioren verschieben zu können, wenn diese älter werden.
Dies alles dient nur dazu, dem typisch deutschen Ordungssinn zu befriedigen.
Vielleicht geht es auch, daß ich eine große DB anlege, und drei verschiedene Abfragemasken generiere, die mir als Ergebnis die Junioren, Jugend bzw. U18 anzeigen. Aber wie das gehen soll, habe ich keine Ahnung.
Antworten
Beitrag von Claus (4645 Beiträge) am Freitag, 13.Februar.2009, 09:28.
Re: Re: Re: Re: Re: Re: Datensätze von einer DB in die andere verschieben
Man kann auch z.B. eine Datenbank und 3 Templates mit verschiedenen Abfragen erstellen, die dann alle auf die eine Hauptdatenbank zugreifen, siehe Doku:
http://doku.baseportal.de/45.html#3
Bei Perl ist man allerdings flexibler und man kann die Prozesse dort auch automatisieren, d.h. z.B. automatische Übertragung von A nach B oder von A nach C bei ereichen eines bestimmten Alters...
Gruß
Claus
Antworten
Beitrag von WS (4 Beiträge) am Freitag, 13.Februar.2009, 10:05.
Re: Re: Re: Re: Re: Re: Re: Datensätze von einer DB in die andere verschieben
Danke für den Tip. Das letztere wäre natürlich genial, wenn man von Perl Ahnung hätte......
Ich versuche mich gerade in ein CMS (joomla 1.5) einzuarbeiten. In dem Zusammenhang käme dann vielleicht auch eine DB, die ich auf die Webseite implementiere.
Baseportal soll erst einmal eine kostenlose Übergangslösung sein, bis ich mir alles per Selbstbeibringung reingeprügelt habe. Vielleicht kann ich dann auch noch Perl Grundlagen mitnehmen.
Antworten
Beitrag von richard (1187 Beiträge) am Freitag, 13.Februar.2009, 11:46. WWW: posaunenchor-rhoden.de
Re: Re: Re: Re: Re: Re: Re: Re: Datensätze von einer DB in die andere verschieben
Antworten
Beitrag von richard (1187 Beiträge) am Freitag, 13.Februar.2009, 13:16.
Re: Re: Re: Re: Re: Re: Re: Re: Re: Datensätze von einer DB in die andere verschieben
Fällt mir gerade noch dazu ein:
Mit der aktuellen c´t (Montag gibts ne neue) gibt es auf CD eine komplette, auf Klick instalierbare Webentwicklungsumgebung für Windows - u.a. mit Apache, MySQL, PHP, Perl und Skripten wie Joomla, Drupal, MediaWiki oder phpBB3.
Antworten
Beitrag von Claus (4645 Beiträge) am Freitag, 13.Februar.2009, 09:06.
Re: Re: Re: Re: Datensätze von einer DB in die andere verschieben
>Änderungen in A sollen automatisch nach B bzw. C übertragen werden. Ist das mit Baseportal realisierbar?
Ja,auch das ist möglich, dafür nimmt man dann "mod", siehe Doku:
http://doku.baseportal.de/51.html
Wie bereits in meinem 1. Beitrag geschrieben, benötigt man dafür ein paar Perl-Kenntnisse, aber die Beschreibung in der Doku für get, put und mod sind eigentlich gut erklärt, so daß man da nur 2 Sachen miteinander verbinden muß...
Mal als Ansatz für den ersten Teil (Übertragung der Daten von A nach B und C):
<perl>
get "Id==*", "DBA";
while(get_next("DBA"))
{
put ["Name", "$Name", "Auto", "$Auto"], "DBB";
put ["Name", "$Name", "Hubraum", "$Hubraum", "Kilometer", "$Kilometer",] "DBC";
}
</perl>
Je nach dem, was gewünscht ist, kann man entsprechende Prüfungen im Template vornehmen, bei Hinzufügen oder Ändern oder auch Löschen...
Gruß
Claus
Antworten
Beitrag von Marco (840 Beiträge) am Donnerstag, 12.Februar.2009, 20:47.
Re: Re: Re: Datensätze von einer DB in die andere verschieben
Hallo Claus,
zĂĽgele bitte Dein Ego.
Ich habe mit keinem Wort erwähnt das Deine Lösung schlechter ist, sondern wollte lediglich eine zweite Alternative darstellen.
Und Dein Vorschlag mit dem Kopieren der DB haut nicht hin. Offensichtlich möchte WS ja drei Datenbanken zusammenführen, die die gleiche Struktur aber zumindest teilweise unterschiedliche Inhalte haben. Da wirst Du mit kopieren nix.
Aber Claus, wenn Du es für Deine persöliche Zufriedenheit brauchst: Dein erster Vorschlag war natürlich um Längen besser und ich Verneige mich in ehrfurcht und Demut.
Marco
Antworten
Beitrag von Thomas (441 Beiträge) am Samstag, 21.März.2009, 17:50. WWW: familienfreunde.de
Re: Re: Re: Re: Datensätze von einer DB in die andere verschieben
Kann es sein, das bei der Zeile
put ["Name", "$Name", "Hubraum", "$Hubraum", "Kilometer", "$Kilometer",] "DBC";
das Komma nach "$Kilometer" hinter die eckige Klammer muss?
Antworten
Beitrag von Claus (4645 Beiträge) am Samstag, 21.März.2009, 18:24.
Re: Re: Re: Re: Re: Datensätze von einer DB in die andere verschieben
Ja, war ein Tipfehler...
put ["Name", "$Name", "Hubraum", "$Hubraum", "Kilometer", "$Kilometer"], "DBC";
Antworten