Estou tentando inserir todos os valores de uma tabela em outra. Mas a instrução insert aceita valores, mas eu gostaria que ele aceitasse um select * da initial_Table. Isso é possível?
fonte
Estou tentando inserir todos os valores de uma tabela em outra. Mas a instrução insert aceita valores, mas eu gostaria que ele aceitasse um select * da initial_Table. Isso é possível?
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:
fonte
Você pode inserir usando uma subconsulta da seguinte maneira:
fonte
A partir daqui:
fonte
Você pode usar uma
select into
declaração. Veja mais em W3Schools .fonte
Existe uma maneira mais fácil de você não precisar digitar nenhum código (ideal para testes ou atualizações únicas):
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
fonte
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.
fonte
Eu acho que essa afirmação pode fazer o que você quiser.
fonte
fonte