Quiero fusionar datos de una base de datos a otra. Entonces creo un volcado con mysqldump
y luego lo importo a otra base de datos (con la misma estructura de tablas). No tengo ningún problema (como entradas duplicadas u otra cosa) en este caso.
Pero hago algunas fusiones con fines de prueba y haré la fusión final más tarde. Por lo tanto, quiero ejecutar la fusión (los datos pueden modificarse) varias veces. Tenga en cuenta que mis filas en mis tablas nunca se eliminan, solo se pueden insertar o actualizar.
¿Puedo crear mysqldump con la opción ON DUPLICATE? ¿O puedo fusionar el volcado que inserta datos nuevos y actualizar los datos modificados?
Claro, puedo insertar ON DUPLICATE
en el volcado manualmente, pero quiero automatizar el proceso de fusión.
--replace
es equivalente a hacerloON DUPLICATE UPDATE
en cada columna. Desafortunadamente, mysqldump no está diseñado para actualizar columnas específicas debido a la naturaleza de carga y descarga masiva de mysqldump. Mi respuesta simplemente revela lo que mysqldump es capaz de hacer. Tendría que escribir un código personalizado, aparte de mysqldump, para hacerloON DUPLICATE UPDATE
.REPLACE INTO
podría fallar porque el registro no se puede eliminar al cortar esas relaciones. Si es asíON DELETE CASCADE
, vaciará las tablas que dependen de la que se esté actualizando.REPLACE INTO
Es una operación bastante peligrosa.REPLACE INTO
) pueden ser peligrosas y tener efectos "sorprendentes". Buena respuesta: solo quería agregar una advertencia.