Ho due tabelle identiche e devo copiare le righe da una tabella all'altra. Qual è il modo migliore per farlo? (Ho bisogno di copiare a livello di codice solo poche righe, non ho bisogno di usare l'utilità di copia di massa).
Risposte:
Finché non ci sono colonne di identità puoi semplicemente
INSERT INTO TableNew
SELECT * FROM TableOld
WHERE [Conditions]
SET IDENTITY_INSERT < table > ON
(e SET IDENTITY_INSERT < table > OFF
) per disabilitare temporaneamente la colonna Identity sulla tabella in cui stai cercando di inserire. Ha funzionato per me cercando di ripristinare alcuni record mancanti nel mezzo del set di dati.
Sintassi alternativa:
INSERT tbl (Col1, Col2, ..., ColN)
SELECT Col1, Col2, ..., ColN
FROM Tbl2
WHERE ...
La query di selezione può (ovviamente) includere espressioni, istruzioni case, costanti / letterali, ecc.
La risposta di Jarrett crea una nuova tabella.
La risposta di Scott si inserisce in una tabella esistente con la stessa struttura.
Puoi anche inserire in una tabella con struttura diversa:
INSERT Table2
(columnX, columnY)
SELECT column1, column2 FROM Table1
WHERE [Conditions]
INSERT INTO DestTable
SELECT * FROM SourceTable
WHERE ...
funziona in SQL Server
SELECT * INTO < new_table > FROM < existing_table > WHERE < clause >
SELECT * INTO [SQLTEST].[dbo].[EMPLOYEES] FROM [SQLPROD].[dbo].[EMPLOYEES]