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

[SOLUCIONADO] Actualizar dos tablas iguales en SQL Server

Estas en el tema de Actualizar dos tablas iguales en SQL Server en el foro de SQL Server en Foros del Web. Buenas a esta fantástica comunidad. Una vez más me remito a ustedes para solicitar su ayuda. La cuestión es la siguiente, necesito actualizar dos tablas ...
  #1 (permalink)  
Antiguo 21/05/2013, 06:01
 
Fecha de Ingreso: mayo-2013
Ubicación: Resistencia, Chaco
Mensajes: 18
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta Actualizar dos tablas iguales en SQL Server

Buenas a esta fantástica comunidad. Una vez más me remito a ustedes para solicitar su ayuda. La cuestión es la siguiente, necesito actualizar dos tablas iguales pero que están en servidores distintos. La idea es poder actualizar si el registro existe y si no existe insertarlo a la base de datos que esta desactualizada. Tengo que actualizar todos los campos, excepto la PK, obviamente, el problema es que no se como hacerlo, probé con todo lo que encontré por ahí pero nada funciona, alguien de acá me podría dar una mano con esto?

Desde ya muchas gracias!
  #2 (permalink)  
Antiguo 21/05/2013, 06:58
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, 3 meses
Puntos: 774
Respuesta: Actualizar dos tablas iguales en SQL Server

probaste con todo lo que encontraste?, si esta bien pero que encontraste? qu eprobaste? ya probaste haciendo un log shipping?, haciendo un merge, un mirroring, utilizando linked server?haciendo un proceso con batch files?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 21/05/2013, 07:07
 
Fecha de Ingreso: mayo-2013
Ubicación: Resistencia, Chaco
Mensajes: 18
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Actualizar dos tablas iguales en SQL Server

Si, se que tengo que usar linked server para que un servidor "vea" a otro, ese no es el problema, también se como insertar si no existe, el problema es como decirle al motor que si existe actualice y si no que inserte...

Gracias por la pronta respuesta!
  #4 (permalink)  
Antiguo 21/05/2013, 07:13
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, 3 meses
Puntos: 774
Respuesta: Actualizar dos tablas iguales en SQL Server

que version de sql server usas? en sql server 2012 hay una funcion para hacer lo que necesitas(ahorita no recuerdo cual es), para hacer que inserte lo que no existe y actualice lo queya esta puedes hacer


Código SQL:
Ver original
  1. INSERT INTO tabla
  2. SELECT VALUES FROM tabla1 AS t1
  3. LEFT JOIN tabla2 AS t2 ON (t1.id=t2.id)
  4. WHERE t2.id IS NULL
  5.  
  6. UPDATE tabla
  7. SET VALUE=t3.VALUE
  8. FROM
  9. (
  10. SELECT VALUES FROM tabla1 AS t1
  11. LEFT JOIN tabla2 AS t2 ON (t1.id=t2.id)
  12. WHERE t2.id IS NOT NULL
  13.  
  14. ) AS t3 WHERE t3.id=tabla.id

saludos,
Libras
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por gnzsoloyo; 21/05/2013 a las 07:29
  #5 (permalink)  
Antiguo 21/05/2013, 08:01
 
Fecha de Ingreso: mayo-2013
Ubicación: Resistencia, Chaco
Mensajes: 18
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Actualizar dos tablas iguales en SQL Server

Que estoy haciendo mal?

Código SQL:
Ver original
  1. UPDATE pruebas.dbo.articulos
  2. SET VALUE=t3.VALUE
  3. FROM
  4. (SELECT VALUES FROM pruebas.dbo.articulos AS T1
  5. LEFT JOIN megamundo_dep24.dbo.articulos AS T2 ON (T1.id_articulos=T2.id_articulos)
  6. WHERE T2.id_articulos IS NOT NULL)
  7. AS t3 WHERE t3.id_articulos = pruebas.dbo.articulos


Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'VALUES'.

Última edición por gnzsoloyo; 21/05/2013 a las 10:43 Razón: Usar HIGHLIGHT "SQL"
  #6 (permalink)  
Antiguo 21/05/2013, 08:08
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, 3 meses
Puntos: 774
Respuesta: Actualizar dos tablas iguales en SQL Server

este...values=los campos de tu tabla que necesitas :S
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 21/05/2013, 10: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: Actualizar dos tablas iguales en SQL Server

Te da error de sintaxis, y no "columna desconocida", porque VALUES es una palabra reservada.
Fuera de eso, como te dice Libras, esa palabra te la pusieron para guiarte acerca de dónde debes poner los nombres de las columnas que ese SELECT debe devolver, no para que uses esa cláusula allí.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 21/05/2013, 13:42
 
Fecha de Ingreso: mayo-2013
Ubicación: Resistencia, Chaco
Mensajes: 18
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Actualizar dos tablas iguales en SQL Server

o sea que si quiero insertar datos de una tabla con otra tengo que poner en el SELECT cada una de las columnas de la tabla? y si mi tabla tiene 30 columnas? tengo que poner las 30?
  #9 (permalink)  
Antiguo 21/05/2013, 14:27
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, 3 meses
Puntos: 774
Respuesta: Actualizar dos tablas iguales en SQL Server

no, con un
Código SQL:
Ver original
  1. INSERT INTO tabla_destino
  2. SELECT * FROM tabla_origen

siempre y cuando tabla_destino y tabla_origen tengan el mismo numero de campos y los campos el mismo tipo de dato....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por gnzsoloyo; 21/05/2013 a las 17:54
  #10 (permalink)  
Antiguo 23/05/2013, 14:28
 
Fecha de Ingreso: mayo-2013
Ubicación: Resistencia, Chaco
Mensajes: 18
Antigüedad: 11 años, 6 meses
Puntos: 0
De acuerdo Respuesta: Actualizar dos tablas iguales en SQL Server

Ya lo pude lograr!!! Estas son las sentencias, las dejo por si a alguien les sirve.


INSERTAR SI NO EXISTE:
Código SQL:
Ver original
  1. INSERT INTO BASE_LOCAL.dbo.h_precios
  2. SELECT     T1.id_articulos, T1.id_secuencia, T1.pr_costo, T1.pr_costo_neto, T1.ta_vari1, T1.ta_vari2, T1.ta_vari3, T1.ta_vari4, T1.ta_vari5, T1.ta_vari6,
  3.                       T1.ta_vari7, T1.ta_vari8, T1.ta_vari9, T1.ta_vari10, T1.ta_vari11, T1.ta_vari12, T1.ta_vari13, T1.ta_vari14, T1.ta_vari15, T1.ta_vari16, T1.ta_vari17,
  4.                       T1.ta_vari18, T1.ta_vari19, T1.ta_vari20, T1.ta_vari21, T1.ta_margen, T1.ta_iva, T1.ta_imp_interno, T1.pr_imp_interno, T1.pr_arcor_a, T1.pr_arcor_b,
  5.                       T1.pr_arcor_c, T1.ta_margen_meta, T1.fe_act_costo, T1.fe_act_preciovta, T1.fe_act_preciovta_b, T1.fe_act_preciovta_c
  6. FROM         [SERVIDOR_REMOTO].BASEREMOTA.dbo.h_precios AS T1 LEFT OUTER JOIN
  7.                       h_precios AS T2 ON T1.id_articulos = T2.id_articulos
  8. WHERE     (T2.id_articulos IS NULL)

ACTUALIZAR SI EXISTE:
Código MySQL:
Ver original
  1. UPDATE BASE_LOCAL.dbo.articulos
  2. SET pr_arcor_a=t3.pr_arcor_a, id_empresa=t3.id_empresa, id_codigobarras=t3.id_codigobarras, de_articulos=t3.de_articulos,
  3. fe_act_preciovta=t3.fe_act_preciovta
  4. (
  5. SELECT t1.pr_arcor_a, t1.id_empresa , t1.id_codigobarras , t1.de_articulos,t1.fe_act_preciovta
  6. FROM [SERVIDOR_REMOTO].BASE_REMOTA.dbo.articulos as T1
  7. LEFT OUTER JOIN articulos as T2 on (t1.id_empresa =t2.id_empresa)
  8. Where t2.id_articulos is not null
  9. ) AS t3 WHERE T3.id_empresa = ARTICULOS.id_empresa

Muchas gracias a todos los que colaboraron!!!

Última edición por gnzsoloyo; 23/05/2013 a las 14:30 Razón: SQL mal etiquetado. Usar Highlight "SQL"

Etiquetas: bases, insert, server, sql, tablas, update
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:24.