Come visualizzare un file di database SQLite su Mac
Hai trovato un file .sqlite, .db o .sqlite3 da qualche parte sul tuo Mac, nella cartella di supporto di un’app, in un backup, in un progetto che stai debuggando, e vuoi sapere cosa contiene davvero. Il doppio clic non fa nulla di utile. Quick Look ti mostra un’anteprima vuota o testo illeggibile. Ti serve un vero visualizzatore di file SQLite, e non è ovvio quale strumento scegliere.
Perché non puoi semplicemente aprirlo come un file normale
I database SQLite sono file binari, non testo. I primi 100 byte sono un’intestazione fissa: una stringa magica che si legge SQLite format 3, seguita da campi come la dimensione della pagina, la codifica del testo, e uno schema cookie che cambia ogni volta che la struttura delle tabelle viene modificata. Dopo quell’intestazione arrivano i dati veri e propri delle pagine, organizzati come un b-tree, motivo per cui un editor di testo li renderizza come rumore.
Quick Look del Finder non analizza nulla di tutto questo. TextEdit lo interpreta come testo semplice e ti mostra caratteri per lo più illeggibili con qualche stringa riconoscibile mescolata (nomi di tabelle, nomi di colonne, e qualsiasi dato di testo memorizzato nelle tabelle tende a sopravvivere perché SQLite memorizza le stringhe in gran parte così come sono). Nulla di tutto ciò ti dice se il file è effettivamente valido, con quale dimensione di pagina è stato creato, o perché qualche altra app si rifiuta di aprirlo.
Le tue opzioni per guardare all’interno
Lo strumento da riga di comando sqlite3. macOS include sqlite3 in Terminal. Esegui sqlite3 yourfile.db ".schema" e otterrai le definizioni delle tabelle, oppure .tables per un elenco veloce. Funziona bene se sai già che è un database valido e vuoi interrogarlo. È meno utile se non sei sicuro che il file sia valido in primo luogo, dato che un’intestazione corrotta produce solo un errore criptico senza dettagli su cosa non va.
DB Browser for SQLite. È lo strumento giusto se il tuo vero obiettivo è sfogliare le righe delle tabelle, modificare i dati, o eseguire query SQL. È gratuito, ben mantenuto, e costruito appositamente per quel lavoro. Se devi esplorare i dati dentro le tabelle, smetti di leggere questo articolo e vai a prendere DB Browser.
Un editor esadecimale con consapevolezza di SQLite. È l’opzione per una domanda diversa: non “cosa c’è nelle tabelle” ma “cos’è davvero questo file”. È la lacuna che colma Hexter. Apri il file e lo legge in sola lettura per impostazione predefinita, quindi non rischi il file solo per guardarlo. La scheda Analyze riconosce a vista l’intestazione SQLite e ne scompone i campi, dimensione della pagina, codifica, schema cookie, accanto all’esadecimale grezzo, così puoi confermare che il file è davvero SQLite, controllare con quale dimensione di pagina è stato creato, o individuare un’intestazione troncata o sovrascritta prima ancora di consegnarla a qualcosa che si aspetta un database pulito.
Quando la vista dei byte grezzi conta davvero
Alcune situazioni in cui vedere l’intestazione direttamente, non solo i risultati delle query, fa risparmiare tempo:
- Un file non si apre nella tua app, e non sei sicuro che sia davvero SQLite. Alcune app scrivono file con estensione
.dbche non sono affatto SQLite. Controllare la stringa magicaSQLite format 3nei primi 16 byte risponde alla domanda in pochi secondi. - Stai debuggando una pipeline di sincronizzazione o backup e sospetti che un file si sia troncato o corrotto durante il trasferimento. Un’intestazione tagliata corta, o un campo della dimensione della pagina che non corrisponde alla dimensione effettiva del file, è una diagnosi rapida.
- Vuoi confermare la codifica del testo di un database (UTF-8 o UTF-16) prima di scrivere codice che lo legge, senza avviare un’intera libreria di database solo per porre una domanda.
- Stai facendo reverse engineering dell’archiviazione locale di un’app e vuoi vedere esattamente cosa c’è su disco prima di decidere se vale la pena scrivere una vera query SQL.
Come farlo
- Apri il file
.sqliteo.dbin Hexter. Si apre in sola lettura, quindi non c’è rischio di modificare per sbaglio un database che ti serve intatto. - Apri la barra laterale Inspector e passa alla scheda Analyze.
- Hexter rileva l’intestazione SQLite automaticamente e ti mostra i campi analizzati accanto agli offset dei byte da cui provengono.
- Se devi guardare più da vicino un campo specifico, come la dimensione della pagina o lo schema cookie, seleziona quei byte nella griglia esadecimale e l’Inspector ti mostra direttamente l’interpretazione numerica.
Se ciò di cui hai davvero bisogno dopo è interrogare le tabelle, è lì che passi a sqlite3 o DB Browser. Sono gli strumenti giusti per quel lavoro. Hexter è per i dieci secondi prima di quello, quando devi solo sapere cosa stai guardando.
Hexter è un editor esadecimale nativo per macOS costruito per rendere sicura per impostazione predefinita esattamente questo tipo di ispezione dei file: sola lettura finché non attivi esplicitamente la modifica, con parsing delle strutture integrato per file SQLite, PNG, ZIP, Mach-O e WAV.