Daten zwischen 2 db verschieben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Daten zwischen 2 db verschieben

    Hallo,

    ich wollte daten (eine Spalte) aus einer Tabelle von DB1 lesen und dann holen und in einer Tabelle der DB2 tun.
    Es ist so, der php-programm soll jedes mal ueberprufen, ob neue daten in der Tabelle der db1 eingetragen wurde.
    Kann jemand mir tipp geben und viellecht die befehle mir auch schreiben. Bin nicht so fit in php.

    danke

  • #2
    Wie sieht die Struktur der Tabellen aus!?

    Nehmen wir mal an, du hast in beiden Datenbanken:

    id | value

    dann könntest Du den hier machen:

    SELECT db1.value AS value FROM db1.tabelle AS db1, db2.tabelle AS db2 WHERE db1.value != db2.value

    Damit holst Du die Daten aus der Tabelle der ersten Datenbank, die noch nicht in der zweiten vorhanden sind. Anschließend führste dann eine Whileschleife aus, beispielsweise so:

    PHP-Code:
    // Das SQL Query von oben:
    $sql mysql_query("SELECT db1.value AS value FROM db1.tabelle AS db1, db2.tabelle AS db2 WHERE db1.value != db2.value");

    // Du erstellst ein neues Array:
    $query = array();

    // Nun machst Du eine Whileschleife, und holst Dir die Daten für Dein Insert Query zusammen:
    while($line mysql_fetch_array($sql)) {
        
    $query[] = "('".$line['value']."'");
    }

    // Nun joinst Du das Query:
    $query join(","$query);

    // Zuletzt erzeugst Du das Insert Query:

    $query "INSERT INTO db2.tabelle (`value`) VALUES ".$query;

    // Und führst es aus:
    mysql_query($query); 
    Ungetestet, sollte aber laufen! Natürlich musst Du die Werte an Deine Datenbanken anpassen...

    Kommentar


    • #3
      oO
      Immer diese php-Programmierer ~.~

      1. Der SELECT ist falsch
      SELECT db1.value FROM db1.tabelle db1 LEFT JOIN db2.tabelle db2 ON db1.value = db2.value WHERE db2.value IS NULL;

      2. Man braucht auch für den Rest kein PHP-Skript
      INSERT INTO db2.tabelle SELECT db1.value FROM db1.tabelle db1 LEFT JOIN db2.tabelle db2 ON db1.value = db2.value WHERE db2.value IS NULL;

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        Danke PHPler,

        ich habe eine frage noch wenn ich darf. das ist die Strukture die tabellen

        strukture db1 tb_users:

        id
        username
        email
        type (C)


        struktur db2 tb_accounts:

        id
        accountname
        username
        email
        typofaccount
        numberofpage

        und z.Bsp: wenn die tb_users in db1 upgedate und "C" hinter type dann den username, email holen und in der tb_accounts von db2 tun und numberofpage um 25 erhoehen.


        Hier wird geprueft, ob in die Tabelle neue daten eingetragen wurden? zum Bsp:

        PHP-Code:
        while($line mysql_fetch_array($sql)) {
        $query[] = "('".$line['value']."'");

        danke

        Kommentar


        • #5
          Original geschrieben von kokoroko

          und z.Bsp: wenn die tb_users in db1 upgedate und "C" hinter type dann den username, email holen und in der tb_accounts von db2 tun und numberofpage um 25 erhoehen.


          Hier wird geprueft, ob in die Tabelle neue daten eingetragen wurden? zum Bsp:

          bitte formulier die frage mal anders, vielleicht kann ich dir dann evtl helfen! weiss leider in dem fall nicht was du meinst.

          Kommentar


          • #6
            Ah sorry ich sehe dass ich viele fehler beim tippen.(mein deutsch ist nicht fit ich).


            z.Bsp: wenn die tb_users in db1 upgedatet wird bzw ein neuen user eintraegen ist und "C" im feld type in db1 steht, dann soll den username, email geholt werden und in der tb_accounts von db2 getan werden und numberofpage um 25 erhoehen und accountnumber muss automatisch generiert werden.
            "die C zu ueberpruefen ob C steht oder nicht ist auch mein problem" Ich habe ein code gebastelt, vielleicht kann jemand mir es corrigieren.
            "Die beiden db liegen auf den selben server".

            Danke ThemBones

            Kommentar


            • #7
              Original geschrieben von ghostgambler
              oO
              Immer diese php-Programmierer ~.~
              Oh ja, das

              Original geschrieben von ghostgambler
              oO
              Immer diese php-Programmierer ~.~

              1. Der SELECT ist falsch
              SELECT db1.value FROM db1.tabelle db1 LEFT JOIN db2.tabelle db2 ON db1.value = db2.value WHERE db2.value IS NULL;

              2. Man braucht auch für den Rest kein PHP-Skript
              INSERT INTO db2.tabelle SELECT db1.value FROM db1.tabelle db1 LEFT JOIN db2.tabelle db2 ON db1.value = db2.value WHERE db2.value IS NULL;
              funktioniert vorallem dann ganz gut, wenn die Datenbanken auf unterschiedlichen Servern liegen...



              @kokoroko: Was bitte ist bei Dir "C"? Steht das für CHAR!? Oder ist der Wert von dem Feld C?

              Kommentar


              • #8
                Original geschrieben von PHPler
                funktioniert vorallem dann ganz gut, wenn die Datenbanken auf unterschiedlichen Servern liegen...
                Steht nirgends~
                Es geht um zwei Datenbanken und die liegen bei mir erstmal auf einem Server... ansonsten sollte man auch explizit danach fragen (und selbst dann geht es per federated storage engine *zucks*)
                Zuletzt geändert von ghostgambler; 30.06.2007, 22:13.

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar

                Lädt...
                X