Beitrag von Oliver ;-) (500 Beiträge) am Dienstag, 12.August.2008, 15:57.
Mehrere Datenbanken zusammenführen
Hallo zusammen,
ich muss mehrere Datenbanken zusammenführen und dabei ein weiteres Feld einbauen. Eigentlich dachte ich mir, dass das kein Problem sei:
- DBs exportieren
- eine weitere Spalte der CSV-Datei füllen (=weiteres Feld)
- DBs nacheinander importieren
Nur leider zerhaut mir die CSV-Datei die Formate einiger Felder. Die sind dann nicht mehr zu gebrauchen.
Gibt es noch einen anderen Weg?
Grüße
Oliver ;-)
Antworten
Beitrag von richard (1187 Beiträge) am Mittwoch, 13.August.2008, 07:31. WWW: posaunenchor-rhoden.de
Re: Mehrere Datenbanken zusammenführen
Mit put kannst Du doch jeden Datensatz von db-a in db-b schreiben.
Also mit get abfragen und per "while (get_next) {put ... }" dann jeweils in die andere db eintragen.
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Mittwoch, 13.August.2008, 12:19.
Re: Re: Mehrere Datenbanken zusammenführen
also bei mehreren tausend Datensätzen ist das aber ein sehr langwieriges und/oder serverlastiges Verfahren.
Außerdem brauche ich bei allen Datensätzen noch ein zusätzliches, mit einem Wert gefülltes Feld.
Antworten
Beitrag von richard (1187 Beiträge) am Mittwoch, 13.August.2008, 12:26. WWW: posaunenchor-rhoden.de
Re: Re: Re: Mehrere Datenbanken zusammenführen
Du hattest nach einer Alternative zu Deiner nicht funktionierenden Lösung gefragt.
also bei mehreren tausend Datensätzen ist das aber ein sehr langwieriges und/oder serverlastiges Verfahren.
Nicht unbedingt, hängt von Deinen Daten ab und man kann das zur Not stückeln. Der Ex- und Import geht im übrigen auch nicht von alleine.
Außerdem brauche ich bei allen Datensätzen noch ein zusätzliches, mit einem Wert gefülltes Feld.
Und? Das Feld legste vorhear an und füllst es gleich mit.
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Mittwoch, 13.August.2008, 22:16.
Re: Re: Re: Re: Mehrere Datenbanken zusammenführen
Wenn ich auf diese Weise das zusätzliche Feld fülle, hängt sich das System fast auf:
<perl>
get "NeuesFeld==_ range=0,10","DB";
while (get_next("DB"))
{
mod "Id==!$_id",["NeuesFeld","Inhalt"],"DB";
}
</perl>
Gibt es eine schlankere Lösung?
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 13.August.2008, 22:45.
Re: Re: Re: Re: Re: Mehrere Datenbanken zusammenführen
Antworten
Beitrag von Pouraga (1396 Beiträge) am Mittwoch, 13.August.2008, 23:01.
Re: Re: Re: Re: Re: Mehrere Datenbanken zusammenführen
Weil sich dein code vermutlich auch so in einer Endlosschleife befindet.
Mod setzt das standart ergebnisshash für "DB" zurück.
Besser so:
<perl>
get "NeuesFeld==_ range=0,10","DB","ergebniss";
while (get_next("ergebniss"))
{
mod "Id==!$_id",["NeuesFeld","Inhalt"],"DB";
}
</perl>
Antworten
Beitrag von Sander (8133 Beiträge) am Mittwoch, 13.August.2008, 23:14.
Re: Re: Re: Re: Re: Re: Mehrere Datenbanken zusammenführen
oh, hab ich ja glatt übersehen ;)
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Donnerstag, 14.August.2008, 22:07.
Re: Re: Re: Re: Re: Re: Mehrere Datenbanken zusammenführen
Danke für den Tipp.
Das nutze ich, um das zusätzliche Feld mit einem Wert zu füllen.
Ich habe das hier bei einem bp-Account (und nicht auf meinem Server) getestet und festgestellt, dass das nur funktioniert, wenn ich "NeuesFeld" auf sortiert "Text (de)" einstelle. Nur mit "Text" funktioniert es nicht.
Mit welchem Codeschnipsel übertrage ich denn am besten den Inhalt von DB_A zu DB_B?
Grüße
Oliver ;-)
Antworten
Beitrag von Sander (8133 Beiträge) am Freitag, 15.August.2008, 00:32.
Re: Re: Re: Re: Re: Re: Re: Mehrere Datenbanken zusammenführen
hast du erstmal pouraga seinen tip mit ergebnis probiert?
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Freitag, 15.August.2008, 13:13.
Re: Re: Re: Re: Re: Re: Re: Re: Mehrere Datenbanken zusammenführen
nein, weil ich ja damit "nur" das zusätzliche Feld befülle.
Jetzt möchte ich eine komplette Datenbank A zur Datenbank B übertragen.
Grundsätzlich stelle ich mir das so vor:
<perl>
get "Id==*","DBa","ergebnis";
while (get_next("ergebniss"))
{
put ["Felda","Inhalta","Feldb","Inhaltb","Feldc","Inhaltc",...],"DBb";
}
</perl>
Ich weiß nur nicht, ob das bei 1.000 oder mehr Datensätzen so sinnvoll ist.
Grüße
Oliver ;-)
Antworten
Beitrag von Sander (8133 Beiträge) am Freitag, 15.August.2008, 13:23.
Re: Re: Re: Re: Re: Re: Re: Re: Re: Mehrere Datenbanken zusammenführen
jo, das ist schneller als ein mod auf die selbe db.
das erspart vielleicht etwas tipparbeit beim put.
<perl>
get "Id==*","DBa","ergebnis";
while (get_next("ergebniss")){
%_put=%_loop;
delete($_put{Id});
$_put{_amount}=1;
$_put{zusatzfeld}="inhalt"; # wenn du noch was befüllen willst
put undef,"DBb";
}</perl>
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Freitag, 15.August.2008, 13:58.
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Mehrere Datenbanken zusammenführen
Antworten
Beitrag von Sander (8133 Beiträge) am Freitag, 15.August.2008, 14:23.
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Mehrere Datenbanken zusammenführen
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Freitag, 15.August.2008, 14:39.
danke - o.T.
Antworten