Questa pagina descrive Calíope 1.5, la versione che stiamo costruendo adesso. La 1.4 è finita ed è in revisione sull'App Store, e il negozio serve oggi la 1.3 sul Mac e la 1.2 su iPad. Il changelog dice in quale versione è arrivata ogni funzione.

Aggiunge a ogni argomento un pulsante «Apri in Calíope». Funziona solo con l'app installata.

Backup e ripristino

Importare dati da CSV, JSON o Excel

Carica dati tabulari da file CSV, JSON o Excel direttamente in una tabella MySQL.

Dove si trova: Albero dello schema › clic destro › Importa dati…

Calíope include una procedura guidata di importazione in tre passi per caricare dati da file esterni.

Come accedere:
Fai clic destro (macOS) o tieni premuto (iPad) sul nome di una tabella nell'albero dello schema e seleziona Importa dati…. La procedura guidata si apre preconfigurata con il database e la tabella selezionati.

Passo 1 — File:
Premi Seleziona file… e scegli il file da importare. La procedura guidata rileva automaticamente il formato.

Formati supportati:
- CSV — con rilevamento automatico del separatore (,, ;, tabulazione).
- JSON — array di oggetti [{…}, {…}].
- Excel (.xlsx) — primo foglio della cartella di lavoro di Microsoft Excel o Numbers.

Passo 2 — Colonne:
La procedura guidata mostra le colonne del file e un selettore per mappare ciascuna alla colonna corrispondente della tabella di destinazione. Le colonne senza mappatura vengono etichettate come Ignora e non vengono importate. Attiva La prima riga è un'intestazione se il file ha una riga di titoli.

Passo 3 — Importa:
Configura le opzioni di importazione:
- Modalità di inserimento:
- INSERT — inserisce le righe normalmente. Fallisce se esiste un conflitto di chiave primaria.
- INSERT IGNORE — inserisce le righe nuove e ignora silenziosamente quelle già esistenti (duplicati di PK).
- REPLACE — se esiste un conflitto di PK, elimina la riga esistente e inserisce quella nuova.
- Righe per lotto — numero di righe inserite in ogni istruzione INSERT. Opzioni: 100, 500 o 1000. I lotti più grandi sono più veloci ma consumano più memoria del server.

Il pannello di log mostra l'avanzamento e il risultato riga per riga.

Disponibile su macOS, iPad e iPhone.

Parole chiave: importare, csv, json, xlsx, excel, caricare dati, import, wizard, mappatura di colonne, foglio di calcolo, INSERT IGNORE, REPLACE, batch, lotto

Generare un backup

Esporta i database e gli oggetti selezionati in un file .sql o .sql.gz senza bloccare l'interfaccia.

Dove si trova: Workspace › Strumenti › Backup

Apri Backup dalla barra di navigazione del workspace. Nel tab Backup, seleziona i database e gli oggetti da includere usando l'albero a sinistra. Configura le opzioni e scegli il file di destinazione. Premi Crea backup.

Elaborazione in background:
Il backup viene eseguito completamente al di fuori del thread principale. L'interfaccia rimane totalmente reattiva mentre il motore esegue il dump dei dati. Il pannello di log in basso mostra l'avanzamento oggetto per oggetto in tempo reale.

Tempo stimato (ETA):
Una volta elaborato il primo oggetto, accanto alla barra di avanzamento appare un contatore del tempo rimanente stimato, calcolato in base alla velocità di dump attuale.

Annullare un backup:
Premi Annulla in qualsiasi momento. Il motore interrompe il dump al termine dell'operazione in corso ed elimina il file parziale dal disco.

macOS: il file viene salvato nel percorso scelto con il pannello del Finder.
iPad: al completamento, appare il pulsante Condividi file per esportare verso l'archivio del dispositivo o iCloud Drive.

Notifica al termine:
Se riduci a icona o cambi app durante un backup lungo, Calíope invia una notifica locale al completamento o in caso di errore. Richiede il permesso di notifiche concesso (macOS: Centro Notifiche; iPad: Impostazioni › Notifiche). Attiva o disattiva questa notifica in Preferenze › Notifiche › Backup manuale in background.

Parole chiave: backup, esportare, mysqldump, sql, background, eta, annullare, avanzamento, notifica

Selezionare gli oggetti per il backup

Scegli quali tabelle, viste, routine e utenti includere.

Dove si trova: Backup › Albero di selezione

L'albero a sinistra mostra ogni database con i suoi tipi di oggetto: Tabelle, Viste, Routine, Trigger ed Eventi. Usa i pulsanti rapidi Tutto, Niente e Solo tabelle per selezionare in blocco, oppure seleziona/deseleziona singolarmente. La sezione Utenti permette di includere gli utenti e i loro privilegi nel backup.

L’albero ha inoltre un filtro per nome nell’intestazione e mostra la dimensione stimata accanto a ogni tabella. La casella di ogni database seleziona o deseleziona tutto il suo contenuto, e alla sua destra vedi quanti oggetti hai selezionato su quanti. La sezione Utenti sta sotto l’albero, non dentro: gli utenti appartengono al server e non dipendono da alcun database.

Parole chiave: selezionare, tabelle, utenti, routine, trigger, backup

Ripristinare da file SQL

Esegue un file .sql o .sql.gz sul server per ripristinare i dati.

Dove si trova: Backup › Tab Ripristina

Nel tab Ripristina, seleziona il file con il selettore unificato. Sono accettati file .sql e .sql.gz (compressi con gzip); Calíope rileva il formato dal magic number del file, non dall'estensione, quindi rinominare il file non cambia il risultato.

Anteprima: premi Anteprima per ispezionare le prime ~200 righe prima di eseguire. Utile per verificare quali database e istruzioni contiene un dump prima di applicarlo.

Conferma preventiva: premendo Ripristina appare un riepilogo con il numero di istruzioni rilevate e i database interessati (estratti da USE, CREATE DATABASE e DROP DATABASE). Se lo script contiene istruzioni DROP, il pulsante di conferma viene evidenziato in rosso.

Annullamento: durante il ripristino puoi premere Annulla per interrompere l'esecuzione dopo l'istruzione corrente.

Errori: il pannello di log mostra ogni errore con la prima riga dell'istruzione fallita per poterla identificare nel dump originale.

macOS: il selettore apre la finestra di dialogo standard del Finder.
iPad: il selettore usa il browser di documenti del sistema, con accesso a iCloud Drive e ad app compatibili. Viene generato un bookmark security-scoped per poter rileggere il file dopo la chiusura del picker.

Richiede una connessione attiva: il pulsante è disabilitato se non c'è un server connesso. Un avviso arancione lo segnala.

Parole chiave: ripristinare, restore, importare, sql file, sql.gz, gzip, compresso, script, icloud, selettore di file, anteprima, conferma, annullare

Opzioni del backup

Configura il contenuto, il formato e la compressione del file di backup generato.

Dove si trova: Backup › Sezione opzioni

Nel tab Backup, la sezione delle opzioni permette di regolare cosa include il file generato:

- DROP prima di CREATE — aggiunge DROP TABLE IF EXISTS (o DROP VIEW, DROP PROCEDURE, ecc.) prima di ogni istruzione CREATE. Consigliato per ripristini puliti che sovrascrivono gli oggetti esistenti.
- Includi i dati — aggiunge le istruzioni INSERT con i dati di ogni tabella selezionata. Disattivalo per generare solo lo schema (struttura senza dati).
- Includi la data nel nome del file — aggiunge la data e l'ora correnti al nome del file di output (ad es. backup_2025-06-05_14-30.sql).
- Includi gli utenti — esporta gli account utente MySQL e i loro privilegi con istruzioni CREATE USER e GRANT.
- Includi le password degli utenti — opzione esplicita disattivata per impostazione predefinita. Quando è disattivata, i CREATE USER / GRANT vengono scritti con IDENTIFIED BY '***REDACTED***'. Attivala solo se hai intenzione di ripristinare il file sullo stesso server e sei sicuro che la cartella di destinazione non sia sincronizzata con iCloud Drive, Dropbox o altri servizi.
- Comprimi l'output (.sql.gz) — applica la compressione gzip al file durante la generazione, senza mantenere l'intero SQL in memoria. Il file risultante riduce la dimensione tra il 70 % e l'85 % rispetto al .sql equivalente. La compressione avviene in tempo reale tramite il framework Compression di Apple.

macOS: il file viene salvato usando la finestra di dialogo standard del Finder.
iPad: al termine del backup, il pulsante Condividi file permette di esportare il .sql o .sql.gz verso qualsiasi destinazione compatibile con il selettore di file del sistema.

Parole chiave: opzioni backup, DROP IF EXISTS, includi dati, includi utenti, schema, struttura, dati, data file, drop before create, comprimere, gzip, sql.gz, compressione

Backup programmati automatici

Configura backup ricorrenti giornalieri o settimanali con notifica al completamento.

Dove si trova: Workspace › Strumenti › Backup

Calíope può eseguire i backup automaticamente senza intervento manuale. Per configurarli, apri il pannello di Backup dalla barra laterale del workspace.

Come configurare un backup programmato:
1. Nella sezione Programmati all'interno del pannello di Backup, premi Aggiungi pianificazione.
2. Scegli il database da salvare, la frequenza (giornaliera o settimanale), l'ora di esecuzione e la cartella di destinazione.
3. Attiva l'interruttore della pianificazione per metterla in funzione.

Comportamento:
- Quando l'app è aperta all'ora configurata, il backup viene eseguito in background senza bloccare l'interfaccia.
- Al completamento, riceverai una notifica di sistema con il nome del file e la sua dimensione.
- Se l'app non era aperta all'ora programmata, il backup verrà contrassegnato come in sospeso e verrà eseguito alla successiva apertura dell'app.
- I backup più vecchi vengono eliminati automaticamente al superamento del numero massimo di copie configurato.

Selezione della cartella di destinazione:
Calíope gira in un sandbox rigoroso (requisito dell'App Store). Quando scegli la cartella con Sfoglia viene generato un permesso persistente per quel percorso specifico. Se sposti o rinomini la cartella in seguito, l'app ti avviserà che deve essere riselezionata. Modificare il percorso a mano nella scheda non è sufficiente — usa sempre il pulsante Sfoglia.

Prestazioni:
I backup programmati usano lo stesso motore di streaming di quelli manuali: scrivono direttamente su disco oggetto per oggetto, senza accumulare l'SQL in memoria. Questo permette di eseguire il backup di database di qualsiasi dimensione senza rischio di esaurimento della RAM o di blocco dell'app.

Disponibile su macOS, iPad e iPhone. Richiede il permesso di notifiche di sistema.

Parole chiave: backup, programmato, automatico, giornaliero, settimanale, notifica, scheduler, pianificazione, background, streaming

Salvare la configurazione come modello (preset manuale)

Riutilizza i parametri di un backup senza pianificarlo. Si eseguono su richiesta con un clic.

Dove si trova: Backup › Tab Programmati

Oltre ai backup automatici (giornalieri, settimanali, feriali, mensili o ogni N ore), il tab Programmati può ospitare modelli manuali: configurazioni salvate con un nome che si eseguono solo quando premi il pulsante Esegui nella loro riga.

Come creare un modello manuale:

1. Dal tab Backup, dopo aver configurato destinazione e opzioni, premi Salva come configurazione… accanto al pulsante Crea backup. Il modello viene registrato nel tab Programmati con frequenza "Manuale — su richiesta".
2. In alternativa, in Programmati › Aggiungi, scegli l'opzione Senza pianificazione (esegui su richiesta) nel selettore di frequenza.

Differenze visive di un preset manuale:

- Icona bolt.circle.fill indaco (vs. calendar.badge.checkmark verde per i programmati attivi).
- Pulsante primario Esegui sempre visibile nella riga.
- Nessun toggle attivo/inattivo e nessuna "prossima esecuzione" (non si applicano).
- Nessun accumulo di missedRuns (non partecipano al ciclo automatico).

Frequenze disponibili per i backup automatici:

- Giornaliero a un'ora fissa.
- Settimanale un giorno specifico della settimana.
- Lun-Ven (feriali) dal lunedì al venerdì.
- Mensile un giorno specifico (1–28) del mese.
- Ogni N ore contate dall'ultima esecuzione.
- Manuale (su richiesta) — senza pianificazione automatica.

Cronologia delle esecuzioni: ogni backup programmato conserva le ultime 10 esecuzioni (riuscite, fallite, annullate e saltate). L'icona clock.arrow.circlepath nella riga apre il foglio con la tabella.

Parole chiave: preset, modello, manuale, su richiesta, programmato, frequenza, mensile, feriali, ogni N ore, cronologia, run history