Re: Re: Re: Re: Re: Re: Re: Re: Re: Mehrere Datenbanken zusammenführen - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    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

 Alle Einträge zum Thema: Zur Liste 
    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

      eine 2te db beschreiben
      get aus der einen, put in die neue - ist aber bei vielen auf sortiert gesetzten feldern auch langsam.
      

     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

      danke, funktioniert...

      kannst du mir kurz erklären, was hier passiert:

       %_put=%_loop;
       delete($_put{Id});
       $_put{_amount}=1;
      

      Grüße
      Oliver ;-)

     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

      %_put=%_loop; #aktueller DS aus der DB wird komplett in %_put übernommen
      delete($_put{Id}); # damit beim put neue Ids geschrieben werden, alte entfernen (Ids sollten halt von bp erledigt werden)
      $_put{_amount}=1; # das wird gebraucht (jedenfalls in V2 wars so), damit überhaupt geschrieben wird
      

     Antworten

    Beitrag von Oliver ;-) (500 Beiträge) am Freitag, 15.August.2008, 14:39.
    danke - o.T.

      ...

     Antworten


     
 Liste der Einträge von 10200 bis 10350:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.10s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!