[SQL] - Tabelle aus einer Datenbank in eine andere Datenbank kopieren?

2 Antworten

Selektier dir auf der aktuellen Datenbank alle Einträge und erstell eine Liste.

Diese Liste nimmst du und erstellst eine Selektion auf der Backup DB mit der du sagst zeig mir alle an die nicht in der Liste enthalten sind.

Das Ergebnis sind die fehlenden Einträge die du per Insert dann in die Tabelle schreiben kannst.


mymomo 
Beitragsersteller
 05.08.2016, 16:21

Klingt logisch, leider fehlt mir die Kenntnis des Umsetzens. Kannst du mir hier eine abstrakte Abfrage zeigen?

Die Spalte "Personalnummer" ist die UID. Die Tabelle lautete "Personal". Die beiden Datenbanken heißen "backup" und "aktuell"

0
IChri5I  05.08.2016, 16:37
@mymomo

Auf die schnelle mal zusammen geschustert.

Zum Selektieren z.B.:

select aktuell.personalnummer from aktuell.personal

(Dann bekommste die Liste)

select backup.personalnummer form backup.personal
where backup.personalnummer not in (hier das Ergebnis der Liste z.B. 101,103,104,110)

(Dann haste die ganzen fehlenden Einträge)

Für den Insert dann

insert into aktuell.personal
(personalnummer, feld2, feld3)
Values
(101, feld2, feld3)

wie gesagt gibt bestimmt noch bessere Methoden und ist nur auf die schnelle.

PS: Den Zugriff auf die Datenbank würde ich nicht rausgeben.

0

Importieren in eine temporäre Tabelle und dann ein SELECT INTO:


SELECT *
INTO CustomersBackup2013
FROM Customers
WHERE Country='Germany';

Wenn eindeutige IDs vorhanden ist, kann man die vor dem Kopieren mit einen "NOT IN (SELECT id ..." ausfiltern.

ABER: es gibt noch das Problem, dass evenutell Referenzen fehlen können!



mymomo 
Beitragsersteller
 05.08.2016, 16:18

wenn ich deine Abfrage aber richtig verstehe, müsste ich ja wissen, welcher Personalstamm fehlt. Das ist nicht bekannt - und es wären auch mehrere 1000 einzeln benannte Datensätze

0
LeCux  05.08.2016, 16:31
@mymomo

Hast Du eine eindeutige ID?

Nennen wir deine in der DB befindelichen Stammdaten A und den Restore B.

Dann kannst Du mit

SELECT * FROM B WHERE id NOT IN (SELECT id FROM A)

diejenigen finden, deren ID in B ist aber NICHT in A (die gelöschte Differenz).

Ist leider u.a. mein täglich Brot. Welchen SQL Server?

0