Diff de esquema SQL
Compara dos esquemas CREATE TABLE y genera la migración ALTER TABLE entre ellos.
Diff de esquema SQL
Pega tu esquema actual a la izquierda y el esquema que quieres alcanzar a la derecha, y esta herramienta te escribe la migración entre ellos. Compara las sentencias CREATE TABLE tabla por tabla y columna por columna, después genera las sentencias CREATE TABLE, DROP TABLE, ADD COLUMN, DROP COLUMN y ALTER COLUMN necesarias para transformar el primer esquema al segundo — útil para revisar un cambio de esquema, escribir un archivo de migración a mano, o verificar qué hizo realmente una herramienta de generación de esquemas.
Elige una base de datos en la opción Database — PostgreSQL, MySQL o SQLite — ya que cada una escribe los cambios de columna de forma diferente: PostgreSQL usa ALTER COLUMN ... TYPE y SET/DROP NOT NULL, MySQL combina el tipo y la nulabilidad en una sentencia MODIFY COLUMN única, y SQLite no tiene ALTER COLUMN en absoluto, así que esos casos se anotan como necesitando un reconstrucción de tabla. Incluye cambios de índices para diferenciar también las sentencias CREATE INDEX, envuelve el resultado en una transacción, y activa la opción de reversión para una segunda migración inversa añadida bajo la primera.
Eliminar una tabla o columna, reducir un tipo, o añadir NOT NULL puede descartar datos o fallar contra filas que no caben en la nueva restricción. Con "Advertir sobre pérdida de datos" activado, cada paso de este tipo se marca en el resultado para que sea fácil de detectar antes de ejecutar nada contra una base de datos real. Las tablas que se referencian entre sí a través de una clave foránea se crean y se eliminan en orden de dependencias, así que el script no falla en una tabla que necesitaba primero.
Todo se ejecuta localmente en tu navegador — tus esquemas nunca se suben a ningún lugar, así que es seguro pegar definiciones de tabla reales de una base de datos privada. Copia la migración, descárgala como archivo .txt, o envía el resultado de vuelta a la entrada para seguir refinándolo.