Microsoft SQL Server
Verschieben und Kopieren von Daten um Tabellen herum
Suche…
Daten von einer Tabelle in eine andere kopieren
Dieser Code wählt Daten aus einer Tabelle aus und zeigt sie im Abfrage-Tool (normalerweise SSMS)
SELECT Column1, Column2, Column3 FROM MySourceTable;
Dieser Code fügt diese Daten in eine Tabelle ein:
INSERT INTO MyTargetTable (Column1, Column2, Column3)
SELECT Column1, Column2, Column3 FROM MySourceTable;
Kopieren Sie die Daten in eine Tabelle und erstellen Sie diese sofort
Dieser Code wählt Daten aus einer Tabelle aus:
SELECT Column1, Column2, Column3 FROM MySourceTable;
Dieser Code erstellt eine neue Tabelle mit dem Namen MyNewTable
und MyNewTable
diese Daten hinzu
SELECT Column1, Column2, Column3
INTO MyNewTable
FROM MySourceTable;
Verschieben von Daten in eine Tabelle (unter Annahme einer eindeutigen Schlüsselmethode)
Um Daten zu verschieben , fügen Sie sie zuerst in das Ziel ein und löschen dann alles, was Sie aus der Quelltabelle eingefügt haben. Dies ist keine normale SQL-Operation, kann aber aufschlussreich sein
Was hast du eingefügt? Normalerweise benötigen Sie in Datenbanken eine oder mehrere Spalten, die Sie zur eindeutigen Identifizierung von Zeilen verwenden können, sodass wir davon ausgehen und diese verwenden.
Diese Anweisung wählt einige Zeilen aus
SELECT Key1, Key2, Column3, Column4 FROM MyTable;
Zuerst fügen wir diese in unsere Zieltabelle ein:
INSERT INTO TargetTable (Key1, Key2, Column3, Column4)
SELECT Key1, Key2, Column3, Column4 FROM MyTable;
Key1
nun angenommen wird, dass Datensätze in beiden Tabellen für Key1
, Key2
eindeutig Key1
, Key2
wir damit Daten aus der Key2
suchen und löschen
DELETE MyTable
WHERE EXISTS (
SELECT * FROM TargetTable
WHERE TargetTable.Key1 = SourceTable.Key1
AND TargetTable.Key2 = SourceTable.Key2
);
Dies funktioniert nur korrekt, wenn Key1
, Key2
in beiden Tabellen eindeutig sind
Schließlich wollen wir nicht, dass die Arbeit zur Hälfte erledigt ist. Wenn wir dies in einer Transaktion abschließen, werden entweder alle Daten verschoben oder nichts passiert. Dadurch wird sichergestellt, dass wir die Daten nicht einfügen und die Daten nicht aus der Quelle löschen können.
BEGIN TRAN;
INSERT INTO TargetTable (Key1, Key2, Column3, Column4)
SELECT Key1, Key2, Column3, Column4 FROM MyTable;
DELETE MyTable
WHERE EXISTS (
SELECT * FROM TargetTable
WHERE TargetTable.Key1 = SourceTable.Key1
AND TargetTable.Key2 = SourceTable.Key2
);
COMMIT TRAN;