Estoy tratando de insertar todos los valores de una tabla en otra. Pero la instrucción insert acepta valores, pero me gustaría que acepte un select * de initial_Table. es posible?
fuente
Estoy tratando de insertar todos los valores de una tabla en otra. Pero la instrucción insert acepta valores, pero me gustaría que acepte un select * de initial_Table. es posible?
La declaración de inserción en realidad tiene una sintaxis para hacer precisamente eso. Sin embargo, es mucho más fácil si especifica los nombres de columna en lugar de seleccionar "*":
INSERT INTO new_table (Foo, Bar, Fizz, Buzz)
SELECT Foo, Bar, Fizz, Buzz
FROM initial_table
-- optionally WHERE ...
Mejor aclarar esto porque, por alguna razón, esta publicación está recibiendo algunos votos negativos.
La sintaxis INSERT INTO ... SELECT FROM es para cuando la tabla en la que está insertando ("new_table" en mi ejemplo anterior) ya existe. Como han dicho otros, la sintaxis SELECT ... INTO es para cuando desea crear la nueva tabla como parte del comando.
No especificó si la nueva tabla debe crearse como parte del comando, por lo que INSERT INTO ... SELECT FROM debería estar bien si su tabla de destino ya existe.
Prueba esto:
fuente
Puede insertar usando una subconsulta de la siguiente manera:
fuente
Desde aquí:
fuente
Puedes usar una
select into
declaración. Ver más en W3Schools .fuente
Hay una manera más fácil de no tener que escribir ningún código (ideal para pruebas o actualizaciones únicas):
Nota - 1 : si las columnas no están en el orden correcto como en la tabla de destino, siempre puede seguir el paso 2 y seleccionar las columnas en el mismo orden que en la tabla de destino
Nota - 2 - Si tiene columnas de identidad, ejecute
SET IDENTITY_INSERT sometableWithIdentity ON
y siga los pasos anteriores, y al final ejecuteSET IDENTITY_INSERT sometableWithIdentity OFF
fuente
Si está transfiriendo una gran cantidad de datos de forma permanente, es decir, no está completando una tabla temporal, le recomendaría utilizar los datos de importación / exportación de SQL Server para las asignaciones de tabla a tabla.
La herramienta Importar / Exportar suele ser mejor que el SQL directo cuando tiene conversiones de tipo y posible truncamiento de valores en su mapeo. En general, cuanto más complejo sea su mapeo, más productivo utilizará una herramienta ETL como Integration Services (SSIS) en lugar de SQL directo.
La herramienta Importar / Exportar es en realidad un asistente de SSIS, y puede guardar su trabajo como un paquete dtsx.
fuente
Creo que esta declaración podría hacer lo que quieras.
fuente
fuente