Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Copiar registros que no estén repetidos a una tabla

Estas en el tema de Copiar registros que no estén repetidos a una tabla en el foro de SQL Server en Foros del Web. hola, yo tengo un inconveniente, yo tengo una base de datos que están trabajando en dos servidores diferentes, ahora yo deseo insertar los registros no ...
  #1 (permalink)  
Antiguo 15/12/2015, 08:54
 
Fecha de Ingreso: octubre-2014
Mensajes: 20
Antigüedad: 10 años, 2 meses
Puntos: 0
Pregunta Copiar registros que no estén repetidos a una tabla

hola, yo tengo un inconveniente, yo tengo una base de datos que están trabajando en dos servidores diferentes, ahora yo deseo insertar los registros no existentes de una de las tablas hacia la otra sin que se me dupliquen, otro inconveniente es que estoy usando SQL Server 2000
  #2 (permalink)  
Antiguo 15/12/2015, 09:54
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Copiar registros que no estén repetidos a una tabla

Investiga sobre replicacion en sql server 2000, o investigar sobre DTS :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 15/12/2015, 11:24
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Copiar registros que no estén repetidos a una tabla

Replicacion no me suena, esta es para enviar "ciertos datos", no todos, yo me iria por LOGSHIPPING
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 15/12/2015, 11:35
 
Fecha de Ingreso: octubre-2014
Mensajes: 20
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Copiar registros que no estén repetidos a una tabla

Quiero aclarar algo, yo tendré dos tablas con los mismos campos y atributos para cada campo, pero de la tabla1 quiero mover únicamente los registros que no existen en tabla2, espero haberme explicado mejor
  #5 (permalink)  
Antiguo 15/12/2015, 11:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Copiar registros que no estén repetidos a una tabla

EN principio, podría ser un simple INSERT ... SELECT, pero la pregunta es: ¿Qué es lo que diferencia a los registros que están de los que no están?
SI nos das una muestra de los datos, ni modo de adivinar... ¿no te parece?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 15/12/2015, 12:14
 
Fecha de Ingreso: octubre-2014
Mensajes: 20
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Copiar registros que no estén repetidos a una tabla

ok, estos son los campos
idpac,idexp,idinss,iden,idriesgo,idcedula,codcat,c odpro,nombres,apellidos,fecnac,codestciv,codsexo,l ugnac,fecapertura,codsit,fecsit,codmil,edad,estado ,codedad,idpamor,asegurado,sucursal

el campo que lo diferencia es idexp, yo hice esta query pero no me recorre todos los registros
Código SQL:
Ver original
  1. DECLARE @pac AS INT
  2. DECLARE @EXP AS VARCHAR(50)
  3. DECLARE @inss AS VARCHAR(50)
  4. DECLARE @en AS VARCHAR(50)
  5. DECLARE @riesgo AS VARCHAR(50)
  6. DECLARE @cedula AS VARCHAR(50)
  7. DECLARE @cat AS INT
  8. DECLARE @pro AS INT
  9. DECLARE @nombres AS VARCHAR(100)
  10. DECLARE @apellidos AS VARCHAR(100)
  11. DECLARE @fecnacimiento AS datetime
  12. DECLARE @estadocivil AS INT
  13. DECLARE @sexo AS INT
  14. DECLARE @lugnacimiento AS VARCHAR(100)
  15. DECLARE @fecapertura AS datetime
  16. DECLARE @sit AS INT
  17. DECLARE @fecsit AS datetime
  18. DECLARE @mil AS INT
  19. DECLARE @edad AS INT
  20. DECLARE @estado AS INT
  21. DECLARE @codedad AS VARCHAR(50)
  22. DECLARE @pamor AS VARCHAR(50)
  23. DECLARE @asegurado AS INT
  24. DECLARE @sucursal AS INT
  25. DECLARE @cod AS VARCHAR(50)
  26. DECLARE NEWESTU CURSOR FOR
  27. -------------------------------------------------------------------------------------------------------------------------------------------------------------------
  28. SELECT * FROM PacientesA WHERE idexp LIKE '5%'
  29. SET @cod=idexp
  30. -------------------------------------------------------------------------------------------------------------------------------------------------------------------
  31. OPEN NEWESTU
  32. FETCH NEXT FROM NEWESTU INTO @pac,@EXP,@inss,@en,@riesgo,@cedula,@cat,@pro,@nombres,@apellidos,@fecnacimiento,@estadocivil,@sexo,@lugnacimiento,@fecapertura,@sit,@fecsit,@mil,@edad,@estado,@codedad,@pamor,@asegurado,@sucursal
  33. WHILE @@FETCH_STATUS = 0
  34. BEGIN
  35.  
  36.     IF EXISTS ( SELECT * FROM PacientesA WHERE idexp=@cod)
  37.         UPDATE  PacientesA   SET idpac=@pac,idexp=@EXP,idinss=@inss,iden=@en,idriesgo=@riesgo,idcedula=@cedula,codcat=@cat,codpro=@pro,nombres=@nombres,apellidos=@apellidos,fecnac=@fecnacimiento,codestciv=@estadocivil,codsexo=@sexo,lugnac=@lugnacimiento,fecapertura=@fecapertura,codsit=@sit,fecsit=@fecsit,codmil=@mil,edad=@edad,estado=@estado,codedad=@codedad,idpamor=@pamor,asegurado=@asegurado,sucursal=@sucursal
  38.     ELSE
  39.         INSERT  INTO PacientesA ( idpac,idexp,idinss,iden,idriesgo,idcedula,codcat,codpro,nombres,apellidos,fecnac,codestciv,codsexo,lugnac,fecapertura,codsit,fecsit,codmil,edad,estado,codedad,idpamor,asegurado,sucursal)
  40.         VALUES  ( @pac,@EXP,@inss,@en,@riesgo,@cedula,@cat,@pro,@nombres,@apellidos,@fecnacimiento,@estadocivil,@sexo,@lugnacimiento,@fecapertura,@sit,@fecsit,@mil,@edad,@estado,@codedad,@pamor,@asegurado,@sucursal )
  41.     FETCH NEXT FROM NEWESTU INTO @pac,@EXP,@inss,@en,@riesgo,@cedula,@cat,@pro,@nombres,@apellidos,@fecnacimiento,@estadocivil,@sexo,@lugnacimiento,@fecapertura,@sit,@fecsit,@mil,@edad,@estado,@codedad,@pamor,@asegurado,@sucursal
  42. END
  43. CLOSE NEWESTU
  44. DEALLOCATE NEWESTU

Última edición por gnzsoloyo; 15/12/2015 a las 12:46 Razón: Codigo SQL sin etiquetar...
  #7 (permalink)  
Antiguo 15/12/2015, 13:43
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Copiar registros que no estén repetidos a una tabla

y porque un cursor cuando puedes hacer un left join?

Para los que existen

Código SQL:
Ver original
  1. UPDATE tabla
  2. SET campo=completa.campo
  3. WHERE
  4. (SELECT * FROM tabla1 AS t1
  5. LEFT JOIN tabla2 AS t2 ON (t1.id=t2.id)
  6. WHERE t2.id IS NOT NULL) AS completa WHERE tabla1.id=completa.id
Para los que no existen:

Código SQL:
Ver original
  1. INSERT INTO tabla
  2. SELECT * FROM tabla1 AS t1
  3. LEFT JOIN tabla2 AS t2 ON (t1.id=t2.id)
  4. WHERE t2.id IS NULL
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 15/12/2015, 13:55
 
Fecha de Ingreso: octubre-2014
Mensajes: 20
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Copiar registros que no estén repetidos a una tabla

quieres decir que con left join irá comparando los registros y cuando encuentre uno que no está en la tabla destino comenzará hacer el proceso de insertar todos los campos de ese registro?
  #9 (permalink)  
Antiguo 15/12/2015, 14:07
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Copiar registros que no estén repetidos a una tabla

el query que te pase inserta todos los registros que no estan en la tabla y actualiza los que si estan......toooodos, no ocupa hacer el barrido de uno por uno
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #10 (permalink)  
Antiguo 15/12/2015, 14:09
 
Fecha de Ingreso: octubre-2014
Mensajes: 20
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Copiar registros que no estén repetidos a una tabla

ok muchas gracias lo voy a probar

Etiquetas: registros, repetidos, server, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:39.