SQL Schema Diff y borrador de migración

Pega los esquemas anterior y nuevo y elige el dialecto. Revisa el SQL generado: las eliminaciones de tablas y columnas van comentadas y el resto de sentencias debe comprobarse antes de ejecutarlas.

Se ejecuta localmente en tu navegador
Esta herramienta procesa todos los datos localmente en tu navegador.
Instantáneas del esquemaPega el SQL CREATE TABLE anterior y nuevo.
Borrador de migraciónLas acciones destructivas quedan comentadas para revisarlas.
Ejecuta la herramienta para mostrar aquí el resultado procesado localmente.

Cómo comparar dos instantáneas de esquema y preparar una migración

Pega el esquema antiguo en «Before» y el nuevo en «After», elige PostgreSQL o MySQL y pulsa Generar migración. La herramienta lee las sentencias CREATE TABLE y escribe las sentencias ALTER y CREATE que llevan una instantánea al otro estado.

Todo se ejecuta en el navegador; ningún texto del esquema sale de la página. El resultado es un borrador para revisar: las sentencias que pueden destruir datos se escriben como comentarios para que nada se ejecute por accidente.

  1. Pega el esquema actual en «Before» o tómalo de un volcado solo de esquema (pg_dump --schema-only o mysqldump --no-data).
  2. Pega el esquema objetivo en «After» o vuelve a ejecutar ese volcado después del cambio que quieras aplicar.
  3. Elige el dialecto del servidor donde se ejecutará la migración y pulsa Generar migración.
  4. Lee primero la lista de hallazgos: las adiciones, los cambios y los elementos destructivos aparecen separados, y las sentencias destructivas quedan comentadas en el borrador.
  5. Copia o descarga schema-migration.sql, ejecútalo en una copia de staging dentro de una transacción cuando el motor lo permita y solo después aplícalo en producción.

Qué cubre el borrador, qué deja comentado y qué omite

Qué detecta el borrador

Compara tablas y columnas: tablas y columnas añadidas o eliminadas, cambios de tipo, cambios de NOT NULL y cambios del valor por defecto. También informa de claves primarias añadidas, eliminadas o con otro conjunto de columnas, incluidas las definiciones a nivel de tabla PRIMARY KEY (a, b).

Las claves foráneas se comparan tanto si están escritas en la columna (REFERENCES users(id)) como si son una restricción de tabla (FOREIGN KEY (a, b) REFERENCES parent (x, y)). Una clave nueva se convierte en ADD CONSTRAINT y una eliminada queda comentada con el nombre de restricción que usaría la herramienta.

Qué queda comentado y qué se omite

DROP TABLE, DROP COLUMN y las claves primarias o foráneas eliminadas se imprimen como comentarios bajo un aviso DESTRUCTIVE, porque borran datos o restricciones que volver a ejecutar la herramienta no puede recuperar. Esta página no ejecuta el borrador: tú decides qué líneas activar.

Solo se leen sentencias CREATE TABLE. Las definiciones UNIQUE, CHECK e INDEX no se comparan, y los cambios de datos, los renombrados, las vistas, secuencias, disparadores, permisos y opciones de tabla propias del motor quedan fuera del alcance. Cuando esas definiciones se omiten, el borrador lo indica en lugar de mostrar un diff limpio.

Ejecutar el borrador con seguridad

Prueba primero en una copia de staging y genera el esquema con un volcado solo de esquema para que los datos no oculten el diff. PostgreSQL ejecuta casi todo el DDL dentro de una transacción, así que BEGIN y ROLLBACK pueden deshacer una migración errónea; MySQL confirma el DDL de forma implícita, por lo que un error hay que repararlo hacia delante.

Añadir NOT NULL o una clave primaria valida o reescribe una tabla existente y puede mantener un bloqueo mientras lo hace. Comprueba cuánto tarda con el tamaño real de la tabla (PostgreSQL valida NOT NULL con un recorrido completo, MySQL puede reconstruir la tabla) y programa el cambio en lugar de ejecutarlo en hora punta.

Herramientas recientes: