Como juntar dois bancos de dados em um só?
23/03/2015
0
Tenho dois Bancos de dados com a mesma estrutura. BD1 e BD2
Preciso passar todos os dados do BD2 para o BD1
Porém, existem dados iguais(com mesmo ID) do BD2 que contém no BD1
Alguém sabe como fazer?
(acredito que seria como se fosse uma replicação entre bancos)
Obs: Utilizo o SQL 2012 Enterprise
Marcelo Neiva
Posts
23/03/2015
Fabiano Carvalho
Se for uma unica tabela basta utilizar LEFT JOIN.
23/03/2015
Thiago Santana
23/03/2015
Marcelo Neiva
23/03/2015
Marcos P
Como existem chaves primárias que se repetem nos dois bancos, você terá de criar uma terceira tabela de destino e fazer o JOIN das duas no momento do insert.
Serão geradas novas chaves primárias... se isso for um problema, terá de ser criada uma nova coluna que irá compor a chave primária da nova tabela, apenas "desempatando" pela origem dos dados.
Algo como :
Tabela.DB1 Tabela.DB2 NovaTabelaDB1 ---------------- ---------------- ---------------- ID ColunaA ID ColunaA ID ColunaA ---------------- ---------------- ---------------- 1 ABC 1 XYZ 1 ABC 2 BCD 2 XXX 2 BCD 3 FDH 3 YYY 3 FDH 4 AAA 4 ZZZ 4 AAA 5 BHU 5 WKL 5 BHU : : 6 XYZ 7 XXX 8 YYY 9 ZZZ 10 WKL :
ou
Tabela.DB1 Tabela.DB2 NovaTabelaDB1 ---------------- ---------------- ---------------- ID ColunaA ID ColunaA ID Origem ColunaA ---------------- ---------------- ---------------- 1 ABC 1 XYZ 1 DB1 ABC 2 BCD 2 XXX 2 DB1 BCD 3 FDH 3 YYY 3 DB1 FDH 4 AAA 4 ZZZ 4 DB1 AAA 5 BHU 5 WKL 5 DB1 BHU : : 1 DB2 XYZ 2 DB3 XXX 3 DB4 YYY 4 DB5 ZZZ 5 DB6 WKL :
Existe, também, a possibilidade de derrubar toda arquitetura de chaves-primárias, mas imagino que isso seja um transtorno muito grande do lado da aplicação.
23/03/2015
Marcos P
Tabela.DB1 Tabela.DB2 NovaTabelaDB1 ---------------- ---------------- ---------------- ID ColunaA ID ColunaA ID Origem ColunaA ---------------- ---------------- ---------------- 1 ABC 1 XYZ 1 DB1 ABC 2 BCD 2 XXX 2 DB1 BCD 3 FDH 3 YYY 3 DB1 FDH 4 AAA 4 ZZZ 4 DB1 AAA 5 BHU 5 WKL 5 DB1 BHU : : 1 DB2 XYZ 2 DB2 XXX 3 DB2 YYY 4 DB2 ZZZ 5 DB2 WKL :
23/03/2015
Marcos P
Tabela.DB1 Tabela.DB2 NovaTabelaDB1 ---------------- ---------------- ------------------- ID ColunaA ID ColunaA ID OLD_ID Coluna ---------------- ---------------- ------------------ 1 ABC 1 XYZ 1 1 ABC 2 BCD 2 XXX 2 2 BCD 3 FDH 3 YYY 3 3 FDH 4 AAA 4 ZZZ 4 4 AAA 5 BHU 5 WKL 5 5 BHU : : 6 1 XYZ 7 2 XXX 8 3 YYY 9 4 ZZZ 10 5 WKL :
01/06/2015
Marcelo Neiva
Em relação aos IDs, daria um UPDATE em cada tabela para o ID necessário, eu teira esses IDs ao criar o Usuário no sistema, não teria problema neste caso.
Marcos P, apesar de sua técnica/ideia ser boa, talvez eu poderia pensar um forma melhor, mas acredito que não resolveria o meu problema.
Valeu pela dica!
Abraços,
Marcelo.
01/06/2015
Mariana Carvalho
01/06/2015
Mariana Carvalho
[url]https://msdn.microsoft.com/pt-br/library/bb510625.aspx[/url]
02/06/2015
Fabiano Carvalho
MERGE DESTINO AS DESTINO USING FONTE AS FONTE ON DESTINO.INDICE = FONTE.DESTINO WHEN MATCHED --Quando encontrar UPDATE SET ENCONTROU = 'SIM' --ATUALIZA A COLUNA ENCONTROU WHEN NOT MATCHED UPDATE SET ENCONTROU = 'NAO' --ATUALIZA A COLUNA NAO ENCONTROU
Clique aqui para fazer login e interagir na Comunidade :)