Microsoft SQL Server
Przenieś i skopiuj dane wokół tabel
Szukaj…
Skopiuj dane z jednej tabeli do drugiej
Ten kod wybiera dane z tabeli i wyświetla je w narzędziu do wysyłania zapytań (zwykle SSMS)
SELECT Column1, Column2, Column3 FROM MySourceTable;
Ten kod wstawia te dane do tabeli:
INSERT INTO MyTargetTable (Column1, Column2, Column3)
SELECT Column1, Column2, Column3 FROM MySourceTable;
Skopiuj dane do tabeli, tworząc ją w locie
Ten kod wybiera dane z tabeli:
SELECT Column1, Column2, Column3 FROM MySourceTable;
Ten kod tworzy nową tabelę o nazwie MyNewTable
i umieszcza w niej dane
SELECT Column1, Column2, Column3
INTO MyNewTable
FROM MySourceTable;
Przenieś dane do tabeli (zakładając unikalną metodę kluczy)
Aby przenieść dane, najpierw wstaw je do celu, a następnie usuń wszystko, co wstawiłeś z tabeli źródłowej. To nie jest normalna operacja SQL, ale może być pouczająca
Co wstawiłeś? Zwykle w bazach danych musisz mieć jedną lub więcej kolumn, których możesz użyć do jednoznacznej identyfikacji wierszy, abyśmy to założyli i wykorzystali.
Ta instrukcja wybiera niektóre wiersze
SELECT Key1, Key2, Column3, Column4 FROM MyTable;
Najpierw wstawiamy je do naszej tabeli docelowej:
INSERT INTO TargetTable (Key1, Key2, Column3, Column4)
SELECT Key1, Key2, Column3, Column4 FROM MyTable;
Zakładając, że rekordy w obu tabelach są unikalne dla Key1
, Key2
, możemy tego użyć, aby znaleźć i usunąć dane z tabeli źródłowej
DELETE MyTable
WHERE EXISTS (
SELECT * FROM TargetTable
WHERE TargetTable.Key1 = SourceTable.Key1
AND TargetTable.Key2 = SourceTable.Key2
);
Key2
to poprawnie tylko wtedy, gdy Key1
, Key2
są unikalne w obu tabelach
Wreszcie, nie chcemy, aby praca została wykonana w połowie. Jeśli podsumujemy to w transakcji, albo wszystkie dane zostaną przeniesione, albo nic się nie wydarzy. To gwarantuje, że nie wstawimy danych, a następnie nie będziemy mogli usunąć danych ze źródła.
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;