SQLite
 sql >> Database >  >> RDS >> SQLite

Formatta i risultati della query SQLite come colonne con intestazioni di colonna

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.