Per impostazione predefinita, quando ci si connette alla shell della riga di comando di SQLite ed si esegue una query, il risultato viene restituito come un elenco separato da pipe.
Potresti aver notato che i risultati non includono i nomi delle colonne, il che può creare confusione se stai cercando di leggerli, soprattutto se la query ha restituito molte colonne.
Fortunatamente, esiste un modo semplice per formattare l'output in modo che venga visualizzato come una colonna con intestazioni di colonna.
L'uscita predefinita
Ad esempio, ecco come l'interfaccia della riga di comando di SQLite restituisce i risultati delle query per impostazione predefinita:
SELECT * FROM Products;
Risultato:
1|Widget Holder|139.5 2|Widget Opener|89.7 3|Widgets - 6 Pack|374.2 4|Blue Widget|63.0
Quindi non ci sono intestazioni di colonna e viene visualizzato come un elenco separato da pipe.
Aggiungi intestazioni di colonna
Per aggiungere i nomi delle colonne a ciascuna colonna, usa .headers on
.
.headers on
SELECT * FROM Products;
Risultato:
ProductId|ProductName|Price 1|Widget Holder|139.5 2|Widget Opener|89.7 3|Widgets - 6 Pack|374.2 4|Blue Widget|63.0
Puoi disabilitare le intestazioni usando .headers off
.
Formatta i risultati come una colonna
Puoi anche usare la .mode column
per formattare i risultati come una colonna.
.mode column
SELECT * FROM Products;
Risultato:
ProductId ProductName Price ---------- ------------- ---------- 1 Widget Holder 139.5 2 Widget Opener 89.7 3 Widgets - 6 P 374.2 4 Blue Widget 63.0
Se devi riportarlo al formato predefinito, puoi utilizzare .mode list
.
Modifica la larghezza della colonna
Potresti notare che nell'esempio precedente uno dei nomi dei prodotti è stato troncato. Questo perché è più largo della larghezza della colonna.
Per impostazione predefinita, ogni colonna ha una larghezza compresa tra 1 e 10 caratteri, a seconda del nome dell'intestazione della colonna e della larghezza della prima colonna di dati. I dati troppo larghi per rientrare in una colonna vengono troncati.
Tuttavia, puoi utilizzare il .width
comando punto per impostare le colonne su una larghezza specifica.
Ecco come possiamo correggere l'esempio precedente in modo che il terzo prodotto non venga troncato.
.width 0 16 0
SELECT * FROM Products;
Risultato:
ProductId ProductName Price ---------- ---------------- ---------- 1 Widget Holder 139.5 2 Widget Opener 89.7 3 Widgets - 6 Pack 374.2 4 Blue Widget 63.0
Ti starai chiedendo perché ho impostato a zero la prima e la terza colonna?
Usando un valore di 0
in realtà rende la colonna autoregolante (fino a un certo punto). Specificando 0
imposta la colonna al maggiore di tre numeri; 10, la larghezza dell'intestazione e la larghezza della prima riga di dati.
Nel mio caso, funziona bene per la prima e la terza colonna, ma non per la seconda colonna. Pertanto, ho impostato quella colonna su 16
(che è il numero di caratteri utilizzati dal terzo prodotto).
Ripristina le impostazioni predefinite
Se è necessario ripristinare brevemente l'output per utilizzare l'impostazione predefinita di SQLite (ovvero un elenco separato da pipe senza intestazioni di colonna), è possibile semplicemente aprire una nuova finestra di terminale ed eseguire i comandi da lì. SQLite utilizzerà le sue impostazioni predefinite in questo caso.
Oppure, se desideri ripristinare la finestra del terminale corrente per utilizzare le impostazioni predefinite, puoi sempre utilizzare semplicemente quanto segue:
.headers off
.mode list
.separator "|"
In questo caso, ho aggiunto il .separator
comando punto, nel caso in cui avessi precedentemente modificato il separatore.
Nel caso te lo stia chiedendo, sì, puoi usare .separator ", "
per generare i risultati come un elenco separato da virgole.
Mantieni le impostazioni della colonna
Come accennato, ogni volta che apri una nuova finestra di terminale per connetterti a SQLite, le query torneranno al formato predefinito di SQLite (elenco separato da pipe).
Per evitare di dover reinserire i comandi sopra ogni volta che ti connetti a SQLite, puoi inserirli in un .sqliterc
file.
Ad esempio, apri un file di testo vuoto e inserisci quanto segue:
.mode column
.headers on
Salva il file come .sqliterc
alla home directory dell'utente e SQLite la utilizzerà ogni volta che si connette.
Ad esempio, se la home directory dell'utente è /Utenti/bart , quindi lo inseriresti in quella directory, in modo che si trovi in /Users/bart/.sqliterc .
Questo è un file nascosto, quindi potresti ricevere vari prompt che ti chiedono di confermare, ecc. A seconda del tuo sistema. Accetta semplicemente le richieste finché non viene salvato nella home directory dell'utente.