Eu quero uma consulta para inserir registros de uma tabela para outra tabela em um banco de dados diferente se a tabela de destino já existe, ela deve anexar os registros no final da tabela.
Eu quero uma consulta para inserir registros de uma tabela para outra tabela em um banco de dados diferente se a tabela de destino já existe, ela deve anexar os registros no final da tabela.
Respostas:
Que tal agora:
USE TargetDatabase
GO
INSERT INTO dbo.TargetTable(field1, field2, field3)
SELECT field1, field2, field3
FROM SourceDatabase.dbo.SourceTable
WHERE (some condition)
Como inserir valores de tabela de um servidor / banco de dados para outro banco de dados?
1 Criação de servidores vinculados {se necessário} (SQL server 2008 R2 - 2012) http://technet.microsoft.com/en-us/library/ff772782.aspx#SSMSProcedure
2 configure o servidor vinculado para usar credenciais a) http://technet.microsoft.com/es-es/library/ms189811(v=sql.105).aspx
EXEC sp_addlinkedsrvlogin 'NAMEOFLINKEDSERVER', 'false', null, 'REMOTEUSERNAME', 'REMOTEUSERPASSWORD'
- VERIFICAR SERVIDORES
SELECT * FROM sys.servers
- TESTE SERVIDORES VINCULADOS
EXEC sp_testlinkedserver N'NAMEOFLINKEDSERVER'
INSERIR NA NOVA TABELA LOCAL
SELECT * INTO NEWTABLE
FROM [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
OU
INSERIR COMO NOVOS VALORES NA TABELA REMOTA
INSERT
INTO [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
SELECT *
FROM localTABLE
INSERIR COMO NOVOS VALORES DE TABELA LOCAL
INSERT
INTO localTABLE
SELECT *
FROM [LINKEDSERVER\INSTANCE].remoteDATABASE.remoteSCHEMA.remoteTABLE
--Code for same server
USE [mydb1]
GO
INSERT INTO dbo.mytable1 (
column1
,column2
,column3
,column4
)
SELECT column1
,column2
,column3
,column4
FROM [mydb2].dbo.mytable2 --WHERE any condition
/*
steps-
1- [mydb1] means our opend connection database
2- mytable1 the table in mydb1 database where we want insert record
3- mydb2 another database.
4- mytable2 is database table where u fetch record from it.
*/
--Code for different server
USE [mydb1]
SELECT *
INTO mytable1
FROM OPENDATASOURCE (
'SQLNCLI'
,'Data Source=XXX.XX.XX.XXX;Initial Catalog=mydb2;User ID=XXX;Password=XXXX'
).[mydb2].dbo.mytable2
/* steps -
1- [mydb1] means our opend connection database
2- mytable1 means create copy table in mydb1 database where we want
insert record
3- XXX.XX.XX.XXX - another server name.
4- mydb2 another server database.
5- write User id and Password of another server credential
6- mytable2 is another server table where u fetch record from it. */
Podes tentar
Insert into your_table_in_db1 select * from your_table_in_db2@db2SID
db2SID é o sid de outro banco de dados. Estará presente no arquivo tnsnames.ora
Principalmente, precisamos desse tipo de consulta no script de migração
INSERT INTO db1.table1(col1,col2,col3,col4)
SELECT col5,col6,col7,col8
FROM db1.table2
Nesta consulta a contagem de colunas deve ser a mesma em ambas as tabelas
Se ambas as tabelas tiverem o mesmo esquema, use esta consulta: inserir em database_name.table_name select * from new_database_name.new_table_name where = 'condition'
Substitua database_name pelo nome de seu primeiro banco de dados e table_name pelo nome da tabela da qual deseja copiar também substitua new_database_name pelo nome de seu outro banco de dados onde deseja copiar e new_table_name é o nome da tabela.
Apenas faça.....
(Ele criará a mesma estrutura de tabela de uma tabela para outra com os mesmos dados)
create table toDatabaseName.toTableName as select * from fromDatabaseName.fromTableName;
Para o SQL Server, você pode usar a ferramenta Importar Dados de outro Banco de Dados, é mais fácil configurar colunas de mapeamento.