Mam tabelę ABC w bazie danych. Chcę utworzyć kopie ABC o nazwach ABC_1, ABC_2, ABC_3 w tej samej bazie danych. Jak mogę to zrobić za pomocą Management Studio (najlepiej) lub zapytań SQL?
Dotyczy to programu SQL Server 2008 R2.
Mam tabelę ABC w bazie danych. Chcę utworzyć kopie ABC o nazwach ABC_1, ABC_2, ABC_3 w tej samej bazie danych. Jak mogę to zrobić za pomocą Management Studio (najlepiej) lub zapytań SQL?
Dotyczy to programu SQL Server 2008 R2.
Odpowiedzi:
Zastosowanie SELECT ... INTO
:
SELECT *
INTO ABC_1
FROM ABC;
Spowoduje to utworzenie nowej tabeli, ABC_1
która ma taką samą strukturę kolumn jak ABC
i zawiera te same dane. Jednak ograniczenia (np. Klucze, wartości domyślne) nie są kopiowane.
Możesz uruchomić to zapytanie wiele razy z inną nazwą tabeli za każdym razem.
Jeśli nie potrzebujesz kopiować danych, a jedynie w celu utworzenia nowej, pustej tabeli o takiej samej strukturze kolumn, dodaj WHERE
klauzulę z fałszywym wyrażeniem:
SELECT *
INTO ABC_1
FROM ABC
WHERE 1 <> 1;
SELECT TOP(0) *
czystszej niż WHERE
metoda zawsze fałszywych stwierdzeń
W SSMS rozwiń bazę danych w Object Explorer , przejdź do Tables , kliknij prawym przyciskiem myszy interesującą Cię tabelę i wybierz Script Table As , Create To , New Query Editor Window . Czy się znaleźć i zastąpić ( CTRL + H ), aby zmienić nazwę tabeli (czyli umieścić ABC
w Znajdowanie co pola i ABC_1
w Zamień następnie kliknij przycisk OK ).
Inne odpowiedzi pokazujące, jak to zrobić za pomocą SQL, również działają dobrze, ale różnica w tej metodzie polega na tym, że otrzymasz także wszelkie indeksy, ograniczenia i wyzwalacze.
Jeśli chcesz dołączyć dane, po utworzeniu tej tabeli uruchom poniższy skrypt, aby skopiować wszystkie dane z ABC (zachowując te same wartości ID, jeśli masz pole tożsamości):
set identity_insert ABC_1 on
insert into ABC_1 (column1, column2) select column1, column2 from ABC
set identity_insert ABC_1 off
IDENTITY_INSERT
na ON, aby zezwolić na ustawienie kolumny tożsamości „ręcznie”, w przykładzie została zmieszana kolejność. Musisz także WYJAŚNIĆ listę swoich kolumn
Jeśli chcesz zduplikować tabelę ze wszystkimi jej ograniczeniami i kluczami, wykonaj poniższe czynności:
Następnie, aby skopiować dane, uruchom poniższy skrypt:
SET IDENTITY_INSERT DuplicateTable ON
INSERT Into DuplicateTable ([Column1], [Column2], [Column3], [Column4],... )
SELECT [Column1], [Column2], [Column3], [Column4],... FROM MainTable
SET IDENTITY_INSERT DuplicateTable OFF
To kolejna opcja:
select top 0 * into <new_table> from <original_table>