Tabellen von einer DB in andere kopieren

Tabellen von einer DB in andere kopieren

am 13.09.2006 16:04:42 von Sebastian Deiszner

Hallo,

mit

INSERT INTO tabelleB SELECT * FROM tabelleA

kopiere ich innerhalb einer Datenbank Tabellen incl. Inhalt.

Die Tabelle A ist in DB1 - die Tabelle B in DB2.

Wie kopiere ich über "Datenbankgrenzen" hinweg?

gruß

Sebastian

Re: Tabellen von einer DB in andere kopieren

am 13.09.2006 16:19:52 von Claus Reibenstein

Sebastian Deiszner schrieb:

> mit
>
> INSERT INTO tabelleB SELECT * FROM tabelleA
>
> kopiere ich innerhalb einer Datenbank Tabellen incl. Inhalt.
>
> Die Tabelle A ist in DB1 - die Tabelle B in DB2.
>
> Wie kopiere ich über "Datenbankgrenzen" hinweg?

Indem Du die Datenbanken mit angibst:

INSERT INTO DB2.tabelleB SELECT * FROM DB1.tabelleA

Gruß. Claus

Re: Tabellen von einer DB in andere kopieren

am 13.09.2006 16:21:52 von Thomas Rachel

Sebastian Deiszner wrote:

> INSERT INTO tabelleB SELECT * FROM tabelleA
>
> kopiere ich innerhalb einer Datenbank Tabellen incl. Inhalt.
>
> Die Tabelle A ist in DB1 - die Tabelle B in DB2.
>
> Wie kopiere ich über "Datenbankgrenzen" hinweg?

Durch "qualifizierte" Tabellenangabe.

Die Datenbankauswahl dient dazu, die Queries kurz zu halten, so daß Du eine
Tabelle nur mit ihrem Namen anzusprechen brauchst.

Willst Du eine Tabelle aus einer konkret angegebenen DB, mußt Du
Datenbank.Tabellenname schreiben. (So wie Du beim Telefonieren die Vorwahl
innerhalb des Ortsnetzes weglassen kannst, außerhalb jedoch davor setzen
mußt.)

Also INSERT INTO DB1.tabelleB SELECT * FROM DB2.TabelleA

was ohne Vorauswahl einer Datenbank funktioniert (und, nebenbei, schlechter
Stil ist - weder Spalten der Zieltabelle als auch Spalten der
Ursprungstabelle sind benannt. Für mal schnell was rüberzuschaufeln ist es
aber ok.)


Thomas
--
Das ist keine Signatur, es handelt sich nur um eine Signatur-Attrappe.

Re: Tabellen von einer DB in andere kopieren

am 13.09.2006 16:33:02 von Christian Kirsch

Am 09/13/2006 04:04 PM schrieb Sebastian Deiszner:
> Hallo,
>
> mit
>
> INSERT INTO tabelleB SELECT * FROM tabelleA
>
> kopiere ich innerhalb einer Datenbank Tabellen incl. Inhalt.
>
> Die Tabelle A ist in DB1 - die Tabelle B in DB2.
>
> Wie kopiere ich über "Datenbankgrenzen" hinweg?
>

Vergleichbare Fragen hatten wir hier vor zwei bis drei Wochen erst.
Bitte suche nach vorhandenen Antworten bevor Du fragst.

Allgemein kannst Du in MySQL jede Tabelle durch Angabe des
Datenbanknamens genauer spezifizieren:
SELECT bla FROM db.tabelle;

Im konkreten Fall hat Dein Unternehmen nur Aussicht auf Erfolg, wenn
Du nicht nur Zugriff auf beide Datenbanken hast, sondern auch für
beide exakt dieselbe Usernamen/Passwort-Kombination verwendest.
Alternativen zu Deinem Vorgehen - wenn also die Rechte nicht passen
oder die Usernamen/Passwörter sich unterscheiden, wurden hier bereits
genannt.

Re: Tabellen von einer DB in andere kopieren

am 13.09.2006 18:33:27 von Sven Paulus

Sebastian Deiszner wrote:
> INSERT INTO tabelleB SELECT * FROM tabelleA
> kopiere ich innerhalb einer Datenbank Tabellen incl. Inhalt.

Nicht wirklich, Du kopierst _nur_ den Inhalt.

CREATE TABLE tabelleB SELECT * FROM tabelleA

dagegen kopiert die Tabellendefinition (allerdings ohne Indizes, die
Zieltabelle ist dann diesbezueglich voellig nackt!) und die Inhalte.

Das geht auch incl. Datenbanknamen:

CREATE TABLE foo.tabelleB SELECT * FROM bar.tabelleA