Considere la siguiente configuración:
- Un DB de producción
- Una base de datos de desarrollo, en la que se realizan cambios de esquema para habilitar nuevas funciones
Cuando se completa el desarrollo de una nueva característica, tengo que actualizar manualmente el esquema prod db hasta que pg_dump --schema-only
ambos DB sean idénticos. Este proceso es propenso a errores y tedioso.
Entonces, estoy buscando una herramienta que pueda:
- Muestra un resumen de las diferencias entre dos esquemas (como
diff
). Tenga en cuenta que no estoy buscando una simple diferencia textual del esquema, sino una herramienta más elaborada que pueda sacar conclusiones como "La tablaX
tiene una nueva columnaY
". - Genere automáticamente el código SQL que convertiría un esquema en otro (como
patch
)
¿Hay un esquema diff / parche herramienta que me puede ayudar a convertir los esquemas prod a los esquemas más avanzados dev?
postgresql
schema
Adam Matan
fuente
fuente
Respuestas:
Perdón por resucitar una vieja pregunta
Recientemente he estado usando la herramienta de gestión de base de datos
0xDBEDataGrip de JetBrains.Es compatible con múltiples motores de base de datos, en el excelente IDE de Jetbrains, y una característica clave que he encontrado útil es la capacidad de
diff
2 tablas (DEV y PROD).A continuación se muestra una captura de pantalla de la diferencia en acción (en este caso, solo hay una diferencia de columna). La captura de pantalla es el resultado del botón "Combinar a la derecha" en la parte superior, que genera el SQL necesario para que la tabla correcta funcione desde cero.
Espero que esta nueva herramienta ayude.
fuente
Database
menú de la izquierda , seleccione las 2 tablas que desea comparar (concmd/ctrl + click
), haga clic derecho y seleccioneCompare
Usa liquibase .
Es compatible con diff , generando una base de datos desde cero, parcheando una base de datos, haciendo retroceder una base de datos y un montón de otras cosas.
Solía tener que escribir todo en XML con liquibase, pero ya no. Puede escribir el 99% en el dialecto SQL que elija. Ejemplo:
Debe mantener sus registros de cambios de liquibase en git o what-have-you.
fuente