Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenimport aus unterschiedlichen/entfernten Datenbanken

Einklappen

Neue Werbung 2019

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

  • Datenimport aus unterschiedlichen/entfernten Datenbanken

    Hallo und guten Tag,

    ich habe ein Problem beim Datenimport aus unterschiedlichen/entfernten Datenbanken.

    Wobei ich mit "entfernt" natürlich nicht gelöscht, sondern auf einem anderen Server meine

    Wenn beide Datenbanken auf Localhost liegen, und mit gleichem Benutzernamen/Passwort angesprochen werden können, funktioniert der Datenimport mit folgendem Programm gut.

    PHP-Code:
    <?php

    function xyz( )
    {
       
    // Datenbankverbindung
       
    $connect = new mysqli_DBHOST_DBENUTZER_DBPASSWORT );
       if (
    mysqli_connect_errno()) { 
       
    printf("Connect failed: %s\n"mysqli_connect_error());
       exit();
        }
        
    // Datenbank1 wählen
       
    mysqli_select_db$connect_DATENBANK );   
       
        
    // Abfrage datenbank 1
        
    $sql mysqli_query$connect"SELECT name FROM datenbank1" );
        
        while ( 
    $sqldata mysqli_fetch_array$sqlMYSQLI_ASSOC ) )
        {
            
    $sql2[] = $sqldata['name'];
        }
       
        
    // ABfrage Datenbank 2
        
    mysqli_select_db$connect_DATENBANK2 );
        
        
    // alle zu importierenden Datensätze in db1 auswählen
        
    $sqlxy "SELECT * FROM datenbank1 WHERE mussimport=1";
        
    // mit db1 verbinden
        
    $res mysqli_query$connect$sqlxy );
        
        while ( 
    $data mysqli_fetch_array$resMYSQLI_ASSOC ) ) {
        
              
    // prüfen, ob Name bereits in beiden Datenbanken vorhanden
            
    if ( @in_array( @$data['name'], @$sql2 ) ) {
                  
    // Name existiert, nicht zum Import freigegeben
                
    echo $data['name']." <font color=\"red\">Datensatz nicht importiert</font>"."<br>";
                
            } else if ( 
    importData$data['name'], $data['adresse'], $data['telefon'], $data['lastchange'], $data['irgendwas'] ) == ) {
                
                echo 
    $data['name']." <font color=\"green\">Datensatz importiert</font>"."<br>";
                
            } else {
            
                echo 
    $data['name']." <font color=\"red\"><b>Fehler gar nichts importiert</font>"."<br>";
                
            }
        }
    }

    function 
    importData$name$adresse$telefon$lastchange$irgendwas$id "" )
    {
       
    // Datenbankverbindung
       
    $connect = new mysqli_DBHOST_DBENUTZER_DBPASSWORT );
       if (
    mysqli_connect_errno()) { 
       
    printf("Connect failed: %s\n"mysqli_connect_error());
       exit();
        }
        
    // Datenbank1 wählen
       
    mysqli_select_db$connect_DATENBANK );   
             
        if ( 
    is_numeric$telefon ) == FALSE ) {
            return 
    FALSE;
        } else {
            if ( 
    $id == "" ) {
                
    $sqlxy "INSERT INTO datenbank1 (name, adresse, telefon, lastchange, irgendwas, aktiv ) 
                          VALUES ('
    {$name}', '{$adresse}', '{$telefon}', '{$lastchange}', '{$irgendwas}', 1)";
                } else {
            
                
    $adressdata mysqli_query$connect"SELECT id FROM datenbank1 WHERE id={$id});
                if ( 
    mysqli_num_rows$adressdata ) == ) {
                    
    $sqlxy "INSERT INTO datenbank1 (name, adresse, telefon, lastchange, irgendwas, aktiv, kunde_id) 
                              VALUES ('
    {$name}', '{$adresse}', '{$telefon}', '{$lastchange}', '{$irgendwas}', 1, {$id})";
                } else {
                
                    
    $sqlxy "INSERT INTO datenbank1 (name, adresse, telefon, lastchange, irgendwas, aktiv) 
                              VALUES ('
    {$name}', '{$adresse}', '{$telefon}', '{$lastchange}', '{$irgendwas}', 1)";
                }
            }
        
    $check mysqli_query$connect$sqlxy );
            if ( 
    $check ) {
                return 
    TRUE;
            } else{
                return 
    FALSE;
            }
        }
    }
    ?>
    Wie stelle ich das ganze aber an, wenn sich Datenbank 1 mit ihrem Benutzernamen/Passwort auf localhost befindet, Datenbank 2 jedoch auf hostirgendwo mit Benutzername xy /Passwort yz?

    Ich suche nun schon einige Zeit erfolglos nach einer Lösung... oder ich verwende die falschen Suchwörter?

    Jedenfalls würde ich mich über heisse Tips freuen. Dinge wie z.B. einen mysqldump der entfernten Datenbank nach localhost einspielen und von dort importieren wären allerdings keine Option.

    Freundliche Grüße,

    Thomas


  • #2
    Du musst zwei Verbindungen aufbauen, eine mit dem entfernten Server und eine mit Localhost. Bei den Abfragen wird ja die Connect-ID übergeben, und somitsollte das kein Problem sein.
    Was dir aber passieren kann, dass dein "entfernter" Server keine Zugriff von außen zulässt.
    Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

    Kommentar


    • #3
      Hallo,

      das würde also bedeuten:

      PHP-Code:
      <?
      //Verbindung 1
         $connect = new mysqli( _DBHOST, _DBENUTZER, _DBPASSWORT );
         if (mysqli_connect_errno()) { 
         printf("Connect failed: %s\n", mysqli_connect_error());
         exit();
          }
          // Datenbank1 wählen
         $db1 = mysqli_select_db( $connect, _DATENBANK ); 

      //Verbindung 2
         $connect2 = new mysqli( _DBHOST2, _DBENUTZER2, _DBPASSWORT2 );
         if (mysqli_connect_errno()) { 
         printf("Connect failed: %s\n", mysqli_connect_error());
         exit();
          }
          // Datenbank2 wählen
         $db2 = mysqli_select_db( $connect2, _DATENBANK2 ); 


      ?>
      Sehe ich das richtig?

      Grundgedanke ist:

      1.) Das Script arbeitet auf Localhost, wo es seine eigene Datenbank hat, in die aus einer ebenfalls auf localhost liegenden anderen Datenbank importiert werden soll.

      2.) Auf einem/mehreren anderen Host(s) liegen weitere gleiche Datenbank(en), aus denen in das auf localhost liegende Script importiert werden soll, indem dann nur die Zugangsdaten des jeweiligen anderen Hosts angewählt werden.

      3.) die verschiedenen Hosts werden durch eine Host-ID voneinander unterschieden... damit man später noch weiß, welcher Datensatz von welchem Host kommt...

      Kommentar


      • #4
        Könnte so gehen, ausprobieren.
        Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

        Kommentar


        • #5
          Als Rückmeldung:

          Auf einem Localhost, jedoch mit unterschiedlichen Benutzerdaten, funktioniert der Ansatz.

          Kommentar


          • #6
            wieso realisiert du das nicht mit incrementellen backups oder über replikation?

            Kommentar

            Lädt...
            X