Respostas:
A instrução insert realmente tem uma sintaxe para fazer exatamente isso. É muito mais fácil se você especificar os nomes das colunas em vez de selecionar "*":
INSERT INTO new_table (Foo, Bar, Fizz, Buzz)
SELECT Foo, Bar, Fizz, Buzz
FROM initial_table
-- optionally WHERE ...
É melhor esclarecer isso porque, por algum motivo, este post está recebendo alguns votos negativos.
A sintaxe INSERT INTO ... SELECT FROM é para quando a tabela que você está inserindo ("new_table" no meu exemplo acima) já existe. Como já foi dito, a sintaxe SELECT ... INTO é para quando você deseja criar a nova tabela como parte do comando.
Você não especificou se a nova tabela precisa ser criada como parte do comando, portanto, INSERT INTO ... SELECT FROM deve ficar bem se sua tabela de destino já existir.
Tente o seguinte:
INSERT INTO newTable SELECT * FROM initial_Table
Você pode inserir usando uma subconsulta da seguinte maneira:
INSERT INTO new_table (columns....)
SELECT columns....
FROM initial_table where column=value
A partir daqui:
SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename
Você pode usar uma select into
declaração. Veja mais em W3Schools .
Existe uma maneira mais fácil de você não precisar digitar nenhum código (ideal para testes ou atualizações únicas):
Passo 1
Passo 2
etapa 3
Passo 4
Etapa 5
Nota - 1 : Se as colunas não estiverem na ordem correta como na tabela Destino, você sempre poderá seguir a Etapa 2 e selecionar as Colunas na mesma ordem que na tabela Destino
Nota - 2 - Se você tiver colunas de identidade, execute SET IDENTITY_INSERT sometableWithIdentity ON
e siga as etapas acima e, no final, executeSET IDENTITY_INSERT sometableWithIdentity OFF
Se você estiver transferindo muitos dados permanentemente, ou seja, não preenchendo uma tabela temporária, eu recomendaria o uso de Dados de Importação / Exportação do SQL Server para mapeamentos de tabela para tabela.
A ferramenta Importar / Exportar geralmente é melhor que o SQL direto quando você tem conversões de tipo e possível truncamento de valor em seu mapeamento. Geralmente, quanto mais complexo seu mapeamento, mais produtivo você está usando uma ferramenta ETL como o SSIS (Integration Services) em vez de SQL direto.
A ferramenta Import / Export é na verdade um assistente do SSIS, e você pode salvar seu trabalho como um pacote dtsx.
Eu acho que essa afirmação pode fazer o que você quiser.
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")