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.

Respaldo y restauración

Importar datos desde CSV, JSON o Excel

Carga datos tabulares de archivos CSV, JSON o Excel directamente en una tabla.

Dónde está: Árbol de esquema › clic derecho › Importar datos…

Calíope incluye un asistente de importación en tres pasos para cargar datos desde archivos externos.

Cómo acceder:
Haz clic derecho (macOS) o mantén pulsado (iPad) sobre el nombre de una tabla en el árbol de esquemas y selecciona Importar datos…. El asistente se abre preconfigurado con la base de datos y tabla seleccionadas.

Paso 1 — Archivo:
Pulsa Seleccionar archivo… y elige el archivo a importar. El asistente detecta automáticamente el formato. Un archivo de más de 64 MB (CSV, JSON o Excel) se rechaza antes de leerlo: el asistente lo dice ahí mismo, con el tamaño del archivo y el máximo. Para importar más, parte el archivo en varios.

Formatos soportados:
- CSV — con detección automática del separador (,, ;, tabulación). Un campo entre comillas puede ocupar varias líneas: los saltos de línea dentro de las comillas se quedan en el valor.
- JSON — array de objetos [{…}, {…}].
- Excel (.xlsx) — primera hoja del libro de Microsoft Excel o Numbers.

Paso 2 — Columnas:
El asistente muestra las columnas del archivo y un selector para mapear cada una a la columna correspondiente de la tabla de destino. Columnas sin mapeado se etiquetan como Ignorar y no se importan. Activa Primera fila es encabezado si el archivo tiene una fila de títulos.

Paso 3 — Importar:
Configura las opciones de importación:
- Modo de inserción — sólo aparece si el motor ofrece más de uno:
- Insertar — inserta las filas tal cual. Una fila cuya clave primaria ya existe falla con el mensaje del servidor.
- Saltar duplicados — inserta las filas nuevas y deja fuera las que tienen una clave primaria que ya existe.
- Reemplazar duplicados — si la clave primaria ya existe, la fila del archivo sustituye a la de la tabla.
- Filas por lote — número de filas que se insertan en cada sentencia INSERT. Opciones: 100, 500 o 1000. Lotes más grandes son más rápidos pero consumen más memoria del servidor.

MySQLMariaDBAurora

Con MySQL y MariaDB se ofrecen los tres modos.

PostgreSQL

Con PostgreSQL sólo se ofrecen Insertar y Saltar duplicados: lo que Calíope puede escribir ahí ante un duplicado salta la fila, no la sustituye, así que Reemplazar duplicados prometería algo que no pasa.

SQL Server

Con SQL Server sólo cabe Insertar, así que el selector no se dibuja: un duplicado falla con el mensaje del servidor.

El panel de log muestra el progreso y el resultado fila por fila.

Disponible en macOS, iPad e iPhone.

Palabras clave: importar, csv, json, xlsx, excel, cargar datos, import, wizard, mapeo de columnas, hoja de cálculo, INSERT IGNORE, REPLACE, batch, lote

Generar un backup

Exporta bases de datos y objetos seleccionados a un archivo .sql o .sql.gz sin bloquear la interfaz.

Dónde está: Espacio de Trabajo › Herramientas › Respaldo

Abre Respaldo desde la barra de navegación del workspace. En la pestaña Respaldo, selecciona las bases de datos y objetos a incluir usando el árbol de la izquierda. Configura las opciones y elige el archivo de destino. Pulsa Crear Respaldo.

Procesamiento en segundo plano:
El respaldo se ejecuta completamente fuera del hilo principal. La interfaz permanece totalmente responsiva mientras el motor vuelca los datos. El panel de log inferior muestra el progreso objeto por objeto en tiempo real.

Tiempo estimado (ETA):
Una vez procesado el primer objeto, aparece junto a la barra de progreso un contador de tiempo restante estimado, calculado a partir de la velocidad actual de volcado.

Cancelar un respaldo:
Pulsa Cancelar en cualquier momento. El motor detiene el volcado tras finalizar la operación en curso y elimina el archivo parcial del disco.

macOS: Guardar en… elige el archivo en el panel de guardar; al terminar, Mostrar en Finder te lleva a él.
iPad: al completarse, aparece el botón Compartir archivo para exportar al almacenamiento del dispositivo o iCloud Drive.

Notificación al terminar:
Si minimizas o cambias de app durante un respaldo largo, Calíope envía una notificación local al completarse o en caso de error. Requiere permiso de notificaciones concedido (macOS: Centro de notificaciones; iPad: Ajustes › Notificaciones). Activa o desactiva esta notificación en Preferencias › Notificaciones › Backup manual en segundo plano.

Palabras clave: backup, respaldo, exportar, mysqldump, sql, segundo plano, eta, cancelar, progreso, notificación

Seleccionar objetos para el backup

Elige qué tablas, vistas, rutinas y usuarios incluir.

Dónde está: Respaldo › Árbol de selección

El árbol de la izquierda muestra cada base de datos con sus tipos de objeto: Tablas, Vistas, Rutinas y Triggers, y Eventos donde el servidor los tiene. Al abrir la herramienta todo empieza marcado. Marcar todas y Desmarcar todas marcan o vacían todo, y los atajos Todo, Solo tablas y Sólo estructura seleccionan en bloque (Sólo estructura además apaga Incluir datos); o marca y desmarca uno a uno. La sección Usuarios del servidor permite incluir las cuentas del servidor y sus privilegios en el respaldo.

El árbol tiene además un filtro por nombre en su cabecera y muestra el tamaño estimado junto a cada tabla. La casilla de cada base marca o desmarca todo su contenido, y a su derecha ves cuántos objetos llevas marcados de cuántos hay. La sección Usuarios del servidor está debajo del árbol, no dentro: los usuarios son del servidor y no cuelgan de ninguna base de datos. Una base creada después de abrir la herramienta aparece con Actualizar lista de bases de datos en el menú contextual del árbol.

SQL Server

Cada entrada del árbol es una base de datos con uno de sus esquemas (demo.dbo, demo.rrhh): el respaldo escribe la base, el esquema y sus objetos.

PostgreSQL

Cada entrada del árbol es un esquema de la base de datos a la que estás conectado: el respaldo escribe el esquema, las extensiones que usa y sus objetos. Los objetos que trae una extensión —las funciones de PostGIS, por ejemplo— no se listan: al restaurar, el archivo vuelve a crear la extensión.

Palabras clave: seleccionar, tablas, usuarios, rutinas, triggers, respaldo

Restaurar desde archivo SQL

Ejecuta un archivo .sql o .sql.gz contra el servidor para restaurar datos.

Dónde está: Respaldo › Pestaña Restaurar

En la pestaña Restaurar, elige el archivo con Elegir archivo…. Se aceptan archivos .sql y .sql.gz (comprimidos con gzip); Calíope detecta el formato por el número mágico del archivo, no por la extensión, así que renombrar el archivo no cambia el resultado.

Vista previa: pulsa Vista previa para inspeccionar las primeras ~200 líneas antes de ejecutar. Útil para verificar qué bases de datos y sentencias contiene un dump antes de aplicarlo.

Confirmación previa: al pulsar Restaurar aparece un resumen con el número de sentencias detectadas y las bases de datos afectadas (leídas de las sentencias que las seleccionan, las crean o las borran). Si el script contiene sentencias DROP, el resumen avisa de que se eliminarán objetos existentes.

SQL Server

El archivo va por lotes separados por líneas GO, y la restauración corta sólo en esas líneas: el cuerpo de un procedimiento con ; dentro llega entero.

PostgreSQL

El archivo se restaura en la base de datos a la que estás conectado: sus esquemas se crean ahí.

MySQLMariaDBAurora

Un volcado de mysqldump o mariadb-dump se restaura como lo haría el cliente de línea de órdenes: sus comentarios ejecutables (/*!40101 … */) llegan al servidor, y las columnas binarias volcadas en crudo, sin --hex-blob, llegan byte a byte.

Cancelación: durante la restauración puedes pulsar Cancelar para detener la ejecución tras la sentencia actual.

Errores: la restauración corre en una sola sesión y se detiene en el primer error. El log nombra la sentencia que falló (el objeto y su base) con el mensaje del servidor, y dice en qué sentencia se detuvo.

macOS: el selector abre el diálogo estándar de Finder.
iPad: el selector usa el navegador de documentos del sistema, con acceso a iCloud Drive y apps compatibles. Se genera un bookmark security-scoped para poder releer el archivo tras cerrar el picker.

Requiere conexión activa: el botón queda deshabilitado si no hay servidor conectado. Un aviso naranja lo señala.

Palabras clave: restaurar, restore, importar, sql file, sql.gz, gzip, comprimido, script, icloud, selector de archivos, vista previa, confirmación, cancelar

Opciones del respaldo

Configura el contenido, el formato y la compresión del archivo de respaldo generado.

Dónde está: Respaldo › Sección de opciones

En la pestaña Respaldo, la sección de opciones permite ajustar qué incluye el archivo generado:

- DROP antes de CREATE — agrega DROP TABLE IF EXISTS (o DROP VIEW, DROP PROCEDURE, etc.) antes de cada sentencia CREATE. Recomendado para restauraciones limpias que sobreescriban objetos existentes.
- Incluir datos — agrega sentencias INSERT con los datos de cada tabla seleccionada. Desactívalo para generar solo el esquema (estructura sin datos).
- Incluir fecha en nombre — agrega la fecha y la hora al nombre del archivo; en macOS, al nombre que propone Guardar en… (p. ej. backup_2026-06-05_14-30.sql).
- Incluir usuarios del servidor — la casilla de la sección Usuarios del servidor, debajo del árbol: exporta las cuentas marcadas ahí y sus privilegios con las sentencias que las crean y sus permisos.
- Incluir contraseñas de usuarios — aparece al incluir los usuarios del servidor. Opción explícita desactivada por defecto. Cuando está apagada, la contraseña —o su hash— se escribe como '***REDACTED***'. Actívala solo si vas a restaurar el archivo en el mismo servidor y estás seguro de que la carpeta destino no está sincronizada con iCloud Drive, Dropbox u otro servicio.
- Comprimir salida (.sql.gz) — aplica compresión gzip sobre el archivo mientras se genera, sin almacenar el SQL completo en memoria. El archivo resultante ocupa entre un 70 % y un 85 % menos que el .sql equivalente. La compresión se realiza en tiempo real mediante el framework Compression de Apple.

MySQLMariaDBAurora

Los usuarios del servidor se escriben como CREATE USER y GRANT.

SQL Server

Los usuarios del servidor son los inicios de sesión: cada uno se escribe como CREATE LOGIN … WITH PASSWORD = … HASHED, con su usuario, sus roles y sus permisos en cada base. DROP antes de CREATE borra además, primero, todos los objetos de cada esquema que trae el archivo.

PostgreSQL

Los usuarios del servidor son los roles: cada uno se escribe como CREATE ROLE, y los roles predefinidos pg_ sólo con sus permisos, porque todo servidor ya los tiene. DROP antes de CREATE borra cada esquema entero (DROP SCHEMA … CASCADE) antes de volver a crearlo.

macOS: Guardar en… elige el archivo en el panel de guardar estándar.
iPad: al terminar el respaldo, el botón Compartir archivo permite exportar el .sql o .sql.gz a cualquier destino compatible con el selector de archivos del sistema.

Palabras clave: opciones backup, DROP IF EXISTS, incluir datos, incluir usuarios, esquema, estructura, datos, fecha archivo, drop before create, comprimir, gzip, sql.gz, compresión

Backups programados automáticos

Configura respaldos recurrentes (diarios, semanales, laborables, mensuales o cada N horas) con notificación al completarse.

Dónde está: Espacio de Trabajo › Herramientas › Respaldo

Calíope puede ejecutar backups de forma automática sin intervención manual. Para configurarlos, abre el panel de Respaldo desde la barra lateral del Workspace.

Cómo configurar un backup programado:
1. En la pestaña Programados del panel de Respaldo, pulsa Nuevo.
2. Ponle un nombre y elige el perfil de conexión (o cualquier conexión activa), la frecuencia (diaria, semanal, de lunes a viernes, mensual, cada N horas o bajo demanda), la hora, la carpeta de destino y cuántas copias conservar.
3. El interruptor de su fila lo enciende y lo apaga.

Un respaldo programado copia todas las bases de su conexión, con DROP antes de CREATE y los datos, sin comprimir. Para respaldar sólo algunas bases, guarda una configuración desde la pestaña Respaldo y dale una frecuencia con su botón del lápiz.

Comportamiento:
- Cuando la app está abierta a la hora configurada, el backup se ejecuta en segundo plano sin bloquear la interfaz.
- Al completarse, recibirás una notificación del sistema con el nombre del archivo y su tamaño.
- Si la app no estaba abierta a la hora programada, el backup queda marcado como pendiente: un aviso dice cuántos se perdieron, y Ejecutar ahora en su fila lo lanza.
- Los backups más antiguos se eliminan automáticamente al superar el número máximo de copias configurado.

Selección de carpeta destino:
Calíope corre en un sandbox estricto (requisito del App Store). Cuando eliges la carpeta con Elegir carpeta… se genera un permiso persistente para esa ruta específica. Si mueves o renombras la carpeta después, la app te avisará que necesita que la vuelvas a seleccionar. Editar la ruta a mano en la ficha no es suficiente — usa siempre Elegir carpeta….

Rendimiento:
Los backups programados usan el mismo motor de streaming que los manuales: escriben directamente al disco objeto por objeto, sin acumular el SQL en memoria. Esto permite respaldar bases de datos de cualquier tamaño sin riesgo de agotamiento de RAM o bloqueo de la app.

Disponible en macOS, iPad e iPhone. Requiere permiso de notificaciones del sistema.

Palabras clave: backup, programado, automático, diario, semanal, notificación, scheduler, horario, segundo plano, streaming

Guardar configuración como plantilla (preset manual)

Reutiliza los parámetros de un respaldo sin calendarizarlo. Se ejecutan bajo demanda con un clic.

Dónde está: Respaldo › Pestaña Programados

Además de los respaldos automáticos (diarios, semanales, laborables, mensuales o cada N horas), la pestaña Programados puede alojar plantillas manuales: configuraciones guardadas con nombre que se ejecutan sólo cuando pulsas el botón Ejecutar en su fila.

Cómo crear una plantilla manual:

1. En la pestaña Respaldo, marca lo que quieres respaldar y pulsa Guardar como configuración…, junto a Crear Respaldo. La plantilla guarda la conexión y las bases que contienen lo marcado (bases enteras), y queda registrada en la pestaña Programados con frecuencia "Manual — bajo demanda". La carpeta no viaja, porque el archivo elegido con Guardar en… no da permiso para volver a escribir en su carpeta: se elige con el botón del lápiz (Elegir carpeta…) antes de la primera ejecución. Las opciones son las de todo respaldo programado: DROP antes de CREATE y los datos, sin comprimir.
2. Alternativamente, en Programados › Nuevo, elige la opción Sin programación (ejecutar bajo demanda) en el selector de frecuencia.

Diferencias visuales de un preset manual:

- Ícono bolt.circle.fill índigo (vs. calendar.badge.checkmark verde para programados activos).
- Botón primario Ejecutar siempre visible en la fila.
- Sin toggle activo/inactivo y sin "próxima ejecución" (no aplican).
- Sin acumulación de missedRuns (no participan del ciclo automático).

Frecuencias disponibles para respaldos automáticos:

- Diario a una hora fija.
- Semanal un día concreto de la semana.
- L-V (laborables) de lunes a viernes.
- Mensual un día concreto (1–28) del mes.
- Cada N horas contadas desde el último run.
- Manual (bajo demanda) — sin programación automática.

Historial de ejecuciones: el botón clock.arrow.circlepath de cada fila (Ver historial) abre las ejecuciones de ese respaldo: éxitos, fallos, cancelados y saltados. Si aún no ha corrido, lo dice.

Palabras clave: preset, plantilla, manual, bajo demanda, programado, frecuencia, mensual, laborables, cada N horas, historial, run history