Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

razs

copiar linhas especificas de uma bd para outra por id

Recommended Posts

Boas existe alguma maneira de tendo uma bd mae e uma local eu puder fazer algo do tipo.

 

 

verifica se existem diferencas na linha com o id = 20 e caso existam alterações substitui essa linha, isto sem ter de comparar todos os campos um de cada vez.

 

 

O objectivo é que ao exportar da bd local para a mae, eu posso corrigir eventuais situações incorrectas na bd mae e depois o utilizador local pode correr um script que altera esses dados que foram corrigidos.

 

Isto sem esquecer que a bd mae tera dados de varios "locais" dai o ideal seria poder comparar por id.

 

Nao sei se me fiz explicar bem mas alguma duvida basta perguntar, obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

um select bem estruturado resolve. Tipo:

select * from NOMEDOBANCO1.dbo.TABELA
where not exists (select * from NOMEDOBANCO2.dbo.TABELA
where NOMEDOBANCO1.dbo.TABELA.CAMPOTABELA = NOMEDOBANCO2.dbo.TABELA.CAMPOTABELA)

Você também pode usar um join e verificar com where.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para as tabelas pequenas acabei por fazer assim

tab1="profissao"
					tab2="diagnosticos"
					tab3="bula"
					tab4="lista_parametros"
				
					x="1"
					do while x <5
					nome_tabela=eval("tab"&x)
					
							Set rsgo_pro = conn1.Execute("select * from "&nome_tabela&" ")
							do while not rsgo_pro.eof
									
									Set rsgo_pro_check = conn.Execute("select * from "&nome_tabela&" where nome='"&rsgo_pro("nome")&"' ")
									if rsgo_pro_check.eof then
										Set rsgo_pro_inser = conn.Execute("insert into "&nome_tabela&" (nome) value('"&rsgo_pro("nome")&"')")
									end if
							
							rsgo_pro.movenext
							loop
							
							set rsgo_pro = nothing
							set rsgo_pro_check = nothing
							set rsgo_pro_inser = nothing
							
							Set rsgo_pro = conn.Execute("select * from "&nome_tabela&"")
							do while not rsgo_pro.eof
									
									Set rsgo_pro_check = conn1.Execute("select * from "&nome_tabela&" where nome='"&rsgo_pro("nome")&"' ")
									if rsgo_pro_check.eof then
										Set rsgo_pro_inser = conn.Execute("DELETE FROM "&nome_tabela&" where nome='"&rsgo_pro("nome")&"' ")
									end if
							
							rsgo_pro.movenext
							loop
							
							set rsgo_pro = nothing
							set rsgo_pro_check = nothing
							set rsgo_pro_inser = nothing	
					x=x+1
					loop

Mas agora já estamos a falar de muitos dados.

E o problema do select que indicas é que as bd tem o mesmo nome

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual banco está usando

Compartilhar este post


Link para o post
Compartilhar em outros sites

Xan, visto que só existe net quando o encarregado la vai ao local, estava aqui a pensar melhor e nao existe um script que crie o ficheiro sql da base de dados mae e depois faça um dump da bd local e importe o ficheiro que sql para o mysql no localhost?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.