SQLite
 sql >> Base de données >  >> RDS >> SQLite

Formater les résultats de la requête SQLite sous forme de colonnes avec des en-têtes de colonne

Par défaut, lorsque vous vous connectez au shell de ligne de commande SQLite et exécutez une requête, le résultat est renvoyé sous la forme d'une liste séparée par des barres.

Vous avez peut-être remarqué que les résultats n'incluent pas les noms de colonne, ce qui peut rendre vos résultats confus si vous essayez de les lire, surtout si la requête a renvoyé de nombreuses colonnes.

Heureusement, il existe un moyen simple de formater la sortie afin qu'elle s'affiche sous la forme d'une colonne avec des en-têtes de colonne.

La sortie par défaut

À titre d'exemple, voici comment l'interface de ligne de commande SQLite affiche les résultats de la requête par défaut :

SELECT * FROM Products;

Résultat :

1|Widget Holder|139.5
2|Widget Opener|89.7
3|Widgets - 6 Pack|374.2
4|Blue Widget|63.0

Il n'y a donc pas d'en-têtes de colonne et il est affiché sous forme de liste séparée par des barres.

Ajouter des en-têtes de colonne

Pour ajouter les noms de colonne à chaque colonne, utilisez .headers on .

.headers on
SELECT * FROM Products;

Résultat :

ProductId|ProductName|Price
1|Widget Holder|139.5
2|Widget Opener|89.7
3|Widgets - 6 Pack|374.2
4|Blue Widget|63.0

Vous pouvez désactiver les en-têtes en utilisant .headers off .

Formater les résultats sous forme de colonne

Vous pouvez également utiliser la colonne .mode column pour formater les résultats sous forme de colonne.

.mode column
SELECT * FROM Products;

Résultat :

ProductId   ProductName    Price     
----------  -------------  ----------
1           Widget Holder  139.5     
2           Widget Opener  89.7      
3           Widgets - 6 P  374.2     
4           Blue Widget    63.0      

Si vous avez besoin de le remettre au format par défaut, vous pouvez utiliser .mode list .

Modifier la largeur de colonne

Vous remarquerez peut-être que dans l'exemple précédent, l'un des noms de produit a été tronqué. C'est parce qu'il est plus large que la largeur de la colonne.

Par défaut, chaque colonne a une largeur comprise entre 1 et 10 caractères, selon le nom de l'en-tête de colonne et la largeur de la première colonne de données. Les données trop larges pour tenir dans une colonne sont tronquées.

Cependant, vous pouvez utiliser le .width commande point pour définir les colonnes sur une largeur spécifique.

Voici comment corriger l'exemple précédent afin que le troisième produit ne soit pas tronqué.

.width 0 16 0
SELECT * FROM Products;

Résultat :

ProductId   ProductName       Price     
----------  ----------------  ----------
1           Widget Holder     139.5     
2           Widget Opener     89.7      
3           Widgets - 6 Pack  374.2     
4           Blue Widget       63.0      

Vous vous demandez peut-être pourquoi j'ai mis les première et troisième colonnes à zéro ?

Utiliser une valeur de 0 rend en fait la colonne auto-ajustable (jusqu'à un certain point). Spécifier 0 définit la colonne sur le plus grand de trois nombres ; 10, la largeur de l'en-tête et la largeur de la première ligne de données.

Dans mon cas, cela fonctionne bien pour les première et troisième colonnes, mais pas pour la deuxième colonne. Par conséquent, j'ai défini cette colonne sur 16 (qui correspond au nombre de caractères utilisés par le troisième produit).

Réinitialiser aux valeurs par défaut

Si vous avez besoin de réinitialiser brièvement la sortie pour utiliser la valeur par défaut de SQLite (c'est-à-dire une liste séparée par des tubes sans en-tête de colonne), vous pouvez simplement ouvrir une nouvelle fenêtre de terminal et exécuter vos commandes à partir de là. SQLite utilisera ses paramètres par défaut dans ce cas.

Ou si vous souhaitez réinitialiser la fenêtre de terminal actuelle pour utiliser les paramètres par défaut, vous pouvez toujours utiliser ce qui suit :

.headers off
.mode list
.separator "|"

Dans ce cas, j'ai ajouté le .separator commande point, juste au cas où vous auriez précédemment changé le séparateur.

Au cas où vous vous poseriez la question, oui, vous pouvez utiliser .separator ", " pour afficher les résultats sous forme de liste séparée par des virgules.

Conserver les paramètres de colonne

Comme mentionné, chaque fois que vous ouvrez une nouvelle fenêtre de terminal pour vous connecter à SQLite, les requêtes reviendront au format par défaut de SQLite (liste séparée par des tubes).

Pour vous éviter d'avoir à ressaisir les commandes ci-dessus chaque fois que vous vous connectez à SQLite, vous pouvez les entrer dans un .sqliterc dossier.

Par exemple, ouvrez un fichier texte vide et saisissez ce qui suit :

.mode column
.headers on

Enregistrez le fichier sous .sqliterc au répertoire personnel de l'utilisateur, et SQLite l'utilisera à chaque fois qu'il se connectera.

Par exemple, si le répertoire personnel de l'utilisateur est /Users/bart , alors vous le placeriez dans ce répertoire, de sorte qu'il se trouve dans /Users/bart/.sqliterc .

Il s'agit d'un fichier caché, vous pouvez donc recevoir diverses invites vous demandant de confirmer, etc., en fonction de votre système. Acceptez simplement les invites jusqu'à ce qu'elles soient enregistrées dans le répertoire personnel de l'utilisateur.