Hendrik: Spalten zu einer anderen Datenbank kopieren

Hallo,

habe zwei MySQL-Datenbanken und möchte gerne aus der einen Datenbank (Tabelle x) die Spalten Name und Ort (nachdem ich meinen Select durchgeführt habe z.B. alle Namen beginnend mit A) in eine andere Datenbank in die Tabelle y in die Spalten Name und Ort einfügen.

Gibt es da eine Möglichkeit?

mfg

  1. Hellihello,

    nach der Abfrage das Array mit den Ergebnissen per INSERT in die andere DB einfügen. Genauso, wie Du sonst auch Daten einfügst, oder was meinst Du?

    frankx

    1. Hellihello,

      nach der Abfrage das Array mit den Ergebnissen per INSERT in die andere DB einfügen. Genauso, wie Du sonst auch Daten einfügst, oder was meinst Du?

      frankx

      Hallo,

      Ich habe aber das Problem, dass ich nicht zwei Verbindungen gleichzeitig hinbekomme (...bin Anfänger).

      Ich mach erst mysql_connect dann mysql_select_db und bin dann mit der ersten DB verbunden. Wenn ich dann den SELECT (der ersten DB) mache und in der Schleife dann die Daten in die zweite DB schreiben möchte müsste ich ja dann eine Verbindung mit der neuen DB aufnehmen - nur wie?

      mfg

      1. Hellihello,

        indem du entweder ein neues Datenbankobjekt erstellst, oder die Ergebnisse der 1. Abfrage in einer PHP Variable (array) speicherst, dann eine neue Verbindung aufmachst und die Daten dann dort einfütterst.

        frankx

        1. Hellihello,

          oder die Ergebnisse der 1. Abfrage in einer PHP Variable (array) speicherst, dann eine neue Verbindung aufmachst und die Daten dann dort einfütterst.

          frankx

          Danke dir. Könntest du mir vielleicht ein Beispiel für die zweite Möglichkeit geben?!

      2. echo $begrüßung;

        Ich mach erst mysql_connect dann mysql_select_db und bin dann mit der ersten DB verbunden. Wenn ich dann den SELECT (der ersten DB) mache und in der Schleife dann die Daten in die zweite DB schreiben möchte müsste ich ja dann eine Verbindung mit der neuen DB aufnehmen - nur wie?

        Bitte schaue dir die Rückgabewerte und Parameter der von dir genannten/benutzten Funktionen im Handbuch an. Du wirst dann feststellen, dass man die von mysql_connect() zurückgegebene Verbindungskennung (natürlich nur, wenn kein Fehler aufgetreten ist) an die nachfolgenden Funktionen weitergeben kann, um sie somit auf speziell dieser Verbindung zu verwenden.

        echo "$verabschiedung $name";

  2. Hallo Hendrik,

    habe zwei MySQL-Datenbanken und möchte gerne aus der einen Datenbank (Tabelle x) die Spalten Name und Ort (nachdem ich meinen Select durchgeführt habe z.B. alle Namen beginnend mit A) in eine andere Datenbank in die Tabelle y in die Spalten Name und Ort einfügen.

    wenn Du mit dem gleichen Benutzer auf _beide_ Datenbanken zugreifen kannst, beide Datenbanken sich auf dem gleichen Server befinden, so kannst Du mit einer einzigen SQL-Anweisung diese Aufgabe erledigen.

    Nehmen wir an die Ausgangsdatenbank heiße "quelle" und die Zieldatenbank heiße "ziel". Dann erledigt

    INSERT INTO ziel.y  -- Gib den Namen in der Form Datenbankname.Tabellenname an  
        (Name, Ort)     -- Zielspalten  
        SELECT          -- das Ergebnis folgender Abfrage  
            q.person,   -- Verwende den Aliasnamen für die Ausgangstabelle  
            q.ort  
        FROM quelle.x q        -- Hier wird der Aliasname bestimmt  
        WHERE q.Name LIKE 'A%' -- Alle Datensätze, bei denen der Name mit A beginnt  
    
    

    Unter MySQL 4.1.15 erfolgreich nachvollzogen.

    Nochmals kurz zusammengefasst:

    Voraussetzungen:
      - Beide Datenbanken auf dem gleichen Server,
      - Zugriff mit dem gleichen Benutzer muss erlaubt sein

    Durchführung:
      - Verwende qualifizierte Namen der Form
        Datenbankname.Tabellenname bzw.
        Datenbankname.Tabellenname.Spaltenname

    Freundliche Grüße

    Vinzenz

    1. wenn Du mit dem gleichen Benutzer auf _beide_ Datenbanken zugreifen kannst, beide Datenbanken sich auf dem gleichen Server befinden, so kannst Du mit einer einzigen SQL-Anweisung diese Aufgabe erledigen.

      Wie macht man das mit zwei Verbindungen? Bspw. wenn zwei versch. Server involviert sind?

      1. Hallo!

        Wie macht man das mit zwei Verbindungen? Bspw. wenn zwei versch. Server involviert sind?

        Danke für Deine Frage.

        Das macht man mit der Federated Storage Engine. Voraussetzung ist MySQL 5.0.3. Bei Shared-Hosting bezweifle ich allerdings, dass diese Storage Engine zur Verfügung steht, siehe MySQL-Handbuch.

        Freundliche Grüße

        Vinzenz

        1. Hallo,

          das Problem ist bei mir das dass ich meine Datenbanken bei Puretec liegen und nicht auf einen Server sitzen. Gibt es da vielleicht noch eine einfachere Lösung, wenn ich nicht direkt auf den Server zugreifen kann?

          1. Hallo Hendrik,

            das Problem ist bei mir das dass ich meine Datenbanken bei Puretec liegen und nicht auf einen Server sitzen. Gibt es da vielleicht noch eine einfachere Lösung,

            eine einfachere Lösung als die Verwendung der Federated Storage Engine und dem Statement aus meinem ersten Posting kann es in diesem Fall doch überhaupt nicht geben.

            wenn ich nicht direkt auf den Server zugreifen kann?

            Bitte beantworte zuerst ein paar Fragen zu Deinem Szenario, bitte beantworte die Fragen für jeden der beiden Server einzeln:

            Welche MySQL-Versionen sind im Einsatz?
            Das kannst Du mit SELECT VERSION() [1] ermitteln.

            Kann ein Fernzugriff auf Deine Datenbanken erfolgen?
            Das könnte Dir SHOW VARIABLES sagen,
            Schau nach, ob die Einstellung

            skip_networking = OFF

            gilt.

            Steht Dir die Federated Storage Engine zur Verfügung?
            Ermittle dies mit SHOW ENGINES.
            Ist natürlich nur notwendig, falls die Version mindestens 5.0.3 ist :-)

            Kannst Du auf Shell-Werkzeuge wie mysql_dump zugreifen?

            Wenn Du diese Fragen beantwortet hast, dann können wir weitersehen.

            Freundliche Grüße

            Vinzenz

            [1] Falls Du phpMyAdmin nutzen kannst, kannst Du die Statements dort im SQL-Fenster eingeben und ausführen lassen.

            1. Welche MySQL-Versionen sind im Einsatz?

              4.0.27

              Kann ein Fernzugriff auf Deine Datenbanken erfolgen?
                  skip_networking = OFF

              Genau so steht es da!

              Kannst Du auf Shell-Werkzeuge

              Nein!

              Vielen Dank für deine ausführliche Hilfe selbst wenn sie mich nicht ans Ziel führen wollte!