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;


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow