Respuestas:
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:
INSERT INTO newTable SELECT * FROM initial_Table
Puede insertar usando una subconsulta de la siguiente manera:
INSERT INTO new_table (columns....)
SELECT columns....
FROM initial_table where column=value
Desde aquí:
SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename
Puedes usar una select into
declaración. Ver más en W3Schools .
Hay una manera más fácil de no tener que escribir ningún código (ideal para pruebas o actualizaciones únicas):
Paso 1
Paso 2
Paso 3
Paso 4
Paso 5
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
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.
Creo que esta declaración podría hacer lo que quieras.
INSERT INTO newTableName (SELECT column1, column2, column3 FROM oldTable);
Dim ofd As New OpenFileDialog
ofd.Filter = "*.mdb|*.MDB"
ofd.FilterIndex = (2)
ofd.FileName = "bd1.mdb"
ofd.Title = "SELECCIONE LA BASE DE DATOS ORIGEN (bd1.mdb)"
ofd.ShowDialog()
Dim conexion1 = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" + ofd.FileName
Dim conn As New OdbcConnection()
conn.ConnectionString = conexion1
conn.Open()
'EN ESTE CODIGO SOLO SE AGREGAN LOS DATOS'
Dim ofd2 As New OpenFileDialog
ofd2.Filter = "*.mdb|*.MDB"
ofd2.FilterIndex = (2)
ofd2.FileName = "bd1.mdb"
ofd2.Title = "SELECCIONE LA BASE DE DATOS DESTINO (bd1.mdb)"
ofd2.ShowDialog()
Dim conexion2 = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" + ofd2.FileName
Dim conn2 As New OdbcConnection()
conn2.ConnectionString = conexion2
Dim cmd2 As New OdbcCommand
Dim CADENA2 As String
CADENA2 = "INSERT INTO EXISTENCIA IN '" + ofd2.FileName + "' SELECT * FROM EXISTENCIA IN '" + ofd.FileName + "'"
cmd2.CommandText = CADENA2
cmd2.Connection = conn2
conn2.Open()
Dim dA2 As New OdbcDataAdapter
dA2.SelectCommand = cmd2
Dim midataset2 As New DataSet
dA2.Fill(midataset2, "EXISTENCIA")