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_1che ha la stessa struttura di colonne ABCe 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 WHEREclausola con un'espressione falsa:
SELECT *
INTO ABC_1
FROM ABC
WHERE 1 <> 1;
SELECT TOP(0) *più pulito del WHEREmetodo 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 ABCnel campo Trova e ABC_1in 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_INSERTsu 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>