Tengo dos tablas idénticas y necesito copiar filas de una tabla a otra. ¿Cuál es la mejor forma de hacerlo? (Necesito copiar programáticamente solo algunas filas, no necesito usar la utilidad de copia masiva).
Respuestas:
Siempre que no haya columnas de identidad, puede simplemente
INSERT INTO TableNew
SELECT * FROM TableOld
WHERE [Conditions]
SET IDENTITY_INSERT < table > ON
(y SET IDENTITY_INSERT < table > OFF
) para deshabilitar temporalmente la columna de identidad en la tabla en la que está tratando de insertar. Me funcionó al intentar restaurar algunos registros faltantes en medio del conjunto de datos.
Sintaxis alternativa:
INSERT tbl (Col1, Col2, ..., ColN)
SELECT Col1, Col2, ..., ColN
FROM Tbl2
WHERE ...
La consulta de selección puede (por supuesto) incluir expresiones, declaraciones de casos, constantes / literales, etc.
La respuesta de Jarrett crea una nueva tabla.
La respuesta de Scott se inserta en una tabla existente con la misma estructura.
También puede insertar en una tabla con estructura diferente:
INSERT Table2
(columnX, columnY)
SELECT column1, column2 FROM Table1
WHERE [Conditions]
INSERT INTO DestTable
SELECT * FROM SourceTable
WHERE ...
funciona en SQL Server
SELECT * INTO < new_table > FROM < existing_table > WHERE < clause >
SELECT * INTO [SQLTEST].[dbo].[EMPLOYEES] FROM [SQLPROD].[dbo].[EMPLOYEES]