Ho una tabella ABC in un database DB. Voglio creare copie di ABC con i nomi ABC_1, ABC_2, ABC_3 nello stesso DB. Come posso farlo utilizzando Management Studio (preferibilmente) o query SQL?
Questo è per SQL Server 2008 R2.
Ho una tabella ABC in un database DB. Voglio creare copie di ABC con i nomi ABC_1, ABC_2, ABC_3 nello stesso DB. Come posso farlo utilizzando Management Studio (preferibilmente) o query SQL?
Questo è per SQL Server 2008 R2.
Risposte:
Usa SELECT ... INTO
:
SELECT *
INTO ABC_1
FROM ABC;
Questo creerà una nuova tabella ABC_1
che ha la stessa struttura di colonne ABC
e contiene gli stessi dati. I vincoli (ad esempio chiavi, valori predefiniti), tuttavia, non vengono copiati.
È possibile eseguire questa query più volte con un nome di tabella diverso ogni volta.
Se non è necessario copiare i dati, solo per creare una nuova tabella vuota con la stessa struttura di colonne, aggiungere una WHERE
clausola con un'espressione falsa:
SELECT *
INTO ABC_1
FROM ABC
WHERE 1 <> 1;
SELECT TOP(0) *
più pulito del WHERE
metodo delle affermazioni sempre false
In SSMS espandi il tuo database in Esplora oggetti , vai su Tabelle , fai clic con il pulsante destro del mouse sulla tabella che ti interessa e seleziona Tabella script come , Crea in , Nuova finestra dell'editor di query . Fai una ricerca e sostituisci ( CTRL + H ) per cambiare il nome della tabella (ad esempio, inserisci ABC
nel campo Trova e ABC_1
in Sostituisci con quindi fai clic su OK ).
Anche le altre risposte che mostrano come eseguire questa operazione tramite SQL funzionano bene, ma la differenza con questo metodo è che otterrai anche eventuali indici, vincoli e trigger.
Se desideri includere dati, dopo aver creato questa tabella esegui lo script seguente per copiare tutti i dati da ABC (mantenendo gli stessi valori ID se hai un campo identità):
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
su ON per consentire di impostare la colonna identità "manualmente", hai mescolato l'ordine nel tuo esempio. Inoltre, devi ESPLICITAMENTE elencare le tue colonne
Se desideri duplicare la tabella con tutti i suoi vincoli e chiavi, segui questi passaggi:
Quindi per copiare i dati eseguire questo script di seguito:
SET IDENTITY_INSERT DuplicateTable ON
INSERT Into DuplicateTable ([Column1], [Column2], [Column3], [Column4],... )
SELECT [Column1], [Column2], [Column3], [Column4],... FROM MainTable
SET IDENTITY_INSERT DuplicateTable OFF
1a opzione
select *
into ABC_1
from ABC;
2a opzione: usa SSIS, ovvero fai clic con il pulsante destro del mouse sul database in Esplora oggetti> tutte le attività> esporta dati
Questa è un'altra opzione:
select top 0 * into <new_table> from <original_table>