Spalten zu einer anderen Datenbank kopieren
Hendrik
- datenbank
0 frankx0 Vinzenz Mai0 Hamstar0 Vinzenz Mai0 Hendrik0 Vinzenz Mai0 Hendrik
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
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
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
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
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?!
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";
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
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?
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
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?
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.
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!