Esta página describe Calíope 1.5, la versión que estoy construyendo ahora mismo. La 1.4 ya está en la App Store para Mac, iPad, iPhone, Apple Watch, Apple TV y Apple Vision Pro. El changelog dice en qué versión llegó cada función.

Añade un botón «Abrir en Calíope» a cada tema. Sólo funciona con la app instalada.

Migración de datos

Migrar objetos entre servidores

Copia tablas, vistas, rutinas, triggers y eventos a otro servidor, o a otra base del mismo.

Dónde está: Espacio de Trabajo › Herramientas › Migración de datos

Abre Migración de datos desde la barra lateral del workspace. Copia tablas, vistas, rutinas, triggers y eventos de esta conexión a otro servidor, o a otra base del mismo.

Elige qué copiar en el árbol de la izquierda. Su cabecera tiene un filtro por nombre: escribe parte del nombre de una base o de un objeto para acotar la lista sin desplegar base por base. Los objetos se agrupan por tipo (Tablas, Vistas, Rutinas, Triggers y Eventos); pulsar un objeto lo marca, y la casilla de cada base marca o desmarca todo su contenido, con la cuenta de marcados sobre el total al lado. Limpiar vacía la selección. El orden lo fija Calíope —tablas, vistas, rutinas, triggers y eventos— para que cada objeto encuentre creado aquello de lo que depende.

Elige adónde va. Junto a Destino:, abre Seleccionar servidor destino, elige una de las conexiones guardadas en el Gestor de conexiones y pulsa Conectar. En En la base, escribe la base en la que acabarán los objetos; vacía, cada objeto conserva la base que tiene en el origen. Calíope crea esa base si no existe, y reescribe las referencias de una vista para que lea de ella.

Opciones: Reemplazar en destino borra todo lo marcado antes de crear nada —primero lo que depende de las tablas, y las tablas hijas antes que sus madres—, así que repetir la misma migración es seguro; Exportar datos copia las filas de cada tabla; Omitir FK checks apaga la comprobación de claves foráneas mientras se carga cada objeto, para que las tablas puedan llegar en cualquier orden.

Pulsa Migrar. El registro da una línea por objeto, con la base a la que fue y, en una tabla, las filas copiadas. Detener para entre un objeto y el siguiente.

Las claves foráneas de las tablas copiadas se crean al final, cuando ya están todas con sus filas: el orden en que llegan deja de importar.

Entre familias de motor distintas un aviso junto a Migrar lo dice antes de ejecutar nada: el DDL de un motor no lo entiende el otro, así que no se crea nada. Sólo se copian filas, a tablas del mismo nombre que ya existan en el destino, emparejando las columnas por nombre; una tabla que el destino no tiene, o un objeto que no es tabla, se salta y el registro lo dice.

SQL Server

Una columna IDENTITY conserva sus valores (Calíope enciende IDENTITY_INSERT mientras copia), pero no su contador: en el destino la fila siguiente sigue desde el máximo copiado. Cada objeto cae en su esquema, que se crea si no existe. Con sólo el nombre de una base en En la base, cada objeto conserva su esquema: demo.dbo va a copia.dbo, y demo.rrhh a copia.rrhh.

PostgreSQL

Aquí una base es un esquema de la base conectada: En la base nombra el esquema al que van los objetos, y se crea si no existe. Los tipos que usan las tablas copiadas —un ENUM, un dominio— se crean antes; uno que ya existe en el destino se conserva tal cual, porque rehacerlo obligaría a soltar cada columna que lo usa. El search_path de una función copiada apunta al esquema de destino, así que sus triggers escriben allí y no en el origen.

> Si el destino es el mismo servidor que el origen y un objeto acabaría en su propia base, Migrar se queda apagado y un aviso dice por qué: con Reemplazar en destino, la copia borraría el original antes de leer sus filas.

> Si el servidor que necesitas no aparece en el selector, añádelo primero en el Gestor de conexiones y vuelve a abrir Migración de datos.

Palabras clave: migrar, migration, copiar, mover, servidor destino, conexión destino, selector

Previsualizar SQL de migración

Revisa el SQL que se ejecutaría antes de migrar.

Dónde está: Migración de datos › Previsualizar

Marca Vista previa y el botón pasa a ser Generar SQL: en lugar de ejecutar nada, Calíope escribe en el panel de salida el SQL que ejecutaría la migración, para que puedas revisarlo o copiarlo. Es el mismo guion que ejecuta la migración: CREATE DATABASE IF NOT EXISTS, el cambio a esa base, las claves foráneas apagadas con Omitir FK checks, con Reemplazar en destino, primero el DROP de todo lo marcado —lo que depende de las tablas, y las tablas hijas antes que sus madres—, después cada objeto, y los INSERT con Exportar datos. Las rutinas y los triggers van entre DELIMITER // y DELIMITER ;, así que el guion también se ejecuta tal cual en el Editor SQL con Ejecutar Script. En modo Vista previa no hace falta conectar el destino.

Las claves foráneas van al final, tras todas las tablas y sus filas.

SQL Server

En SQL Server el guion crea la base y el esquema si faltan (IF DB_ID(…) IS NULL), no lleva DELIMITER —cada rutina va en su propio EXEC— y las filas con valor de identidad van entre SET IDENTITY_INSERT … ON y OFF.

PostgreSQL

En PostgreSQL el guion crea el esquema si falta (CREATE SCHEMA IF NOT EXISTS), apaga las claves foráneas con SET session_replication_role, crea antes de las tablas los tipos que usan, y no lleva DELIMITER: el cuerpo de una función va entre comillas $function$.

Palabras clave: preview, previsualizar, SQL preview, revisar antes de ejecutar