Merge

10 views
Skip to first unread message

Igor Alves

unread,
Apr 18, 2013, 12:19:47 PM4/18/13
to sql-serv...@googlegroups.com
Gostaria de saber se existe alguma forma de realizar um merge entre 2 database, mas de todas as tabelas. Ou tenho que realizar o comando tabela por tabela?



Igor Alves
System Analyst 
Cientista da Computação pela Faculdade Ruy Barbosa - FRB

Fábio Chicout

unread,
Apr 18, 2013, 1:05:36 PM4/18/13
to sql-serv...@googlegroups.com
Explica melhor esse merge...
Pensei logo de cara em joins com instâncias de SQL Server's em IP's diferentes, seria isso?


2013/4/18 Igor Alves <igor....@gmail.com>
--
--
----------------------
Você recebeu essa mensagem porque você esta inscrito no grupo "SQL Server Brasil" do Google Groups.
Para postar nesse grupo, envie mensagem para sql-serv...@googlegroups.com
Para sair desse grupo, envie mensagem para sql-server-bra...@googlegroups.com
Para mais opções, visite a página desse grupo em http://groups.google.com/group/sql-server-brasil
----------------------
You received this message because you are subscribed to the Google Groups "SQL Server Brasil" group.
To post to this group, send email to sql-serv...@googlegroups.com
To unsubscribe from this group, send email to sql-server-bra...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sql-server-brasil
---
Você está recebendo esta mensagem porque se inscreveu no grupo "SQL Server Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para sql-server-bra...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Jefferson Montija Cirilo

unread,
Apr 18, 2013, 2:04:22 PM4/18/13
to sql-serv...@googlegroups.com

Boa tarde Igor,

 

Eu acho (de longe) o join entre as tabelas do banco de dados mais fácil de fazer, mas pelo MERGE acho que dá certo também.

 

Fiz rápid, tem que trabalhar mais o código, mas é algo por aqui.

Como você pode ter uma PK composta, considerei o JOIN. Se for simples, o NOT IN daria certo também.

Depois você inverte a order dos INSERTs para ver o que acontece.

 

Use TempDB

Go

SET NOCOUNT ON

 

declare @tabela1 table (idx smallint, nome1 varchar(200))

 

declare @tabela2 table (idx smallint, nome2 varchar(200))

 

insert into @tabela1 (idx, nome1) values (1, 'valor1')

insert into @tabela1 (idx, nome1) values (2, 'valor2')

insert into @tabela1 (idx, nome1) values (3, 'valor3')

insert into @tabela1 (idx, nome1) values (4, 'valor4')

 

insert into @tabela2 (idx, nome2) values (5, 'valor5')

insert into @tabela2 (idx, nome2) values (6, 'valor6')

insert into @tabela2 (idx, nome2) values (7, 'valor7')

insert into @tabela2 (idx, nome2) values (1, 'valor1') -- tem na tabela 1, não pode inserir

 

insert into @tabela1 select t2.idx, t2.nome2 from @tabela2 t2 -- vai duplicar, pois não tem PK

insert into @tabela1 select t2.idx, t2.nome2 from @tabela2 t2 left join @tabela1 t1 on t1.idx=t2.idx where t1.idx is null

select * from @tabela1 order by idx

 

Atenciosamente,

 

Jefferson

--

Reply all
Reply to author
Forward
0 new messages