Aller au contenu

SQLite : console (client sqlite3)

Le client sqlite3 est la console de SQLite. Les exemples utilisent le fichier boutique.db.

Fenêtre de terminal
sqlite3 boutique.db # ouvre (ou crée) le fichier
sqlite3 # base temporaire en mémoire, perdue à la sortie
sqlite3 -readonly boutique.db # ouverture en lecture seule

Les commandes du client commencent par un point, sans ;. Les instructions SQL se terminent par ;.

Commande Rôle
.help Liste les commandes
.open autre.db Ouvre un autre fichier
.databases Bases attachées et leur fichier
.tables Liste les tables
.schema Instructions de création de tout le schéma
.schema clients Création d’une table
.indexes clients Index d’une table
.headers on Affiche les noms de colonnes
.mode table Format d’affichage (voir plus bas)
.width 10 20 Largeur des colonnes (modes column)
.nullvalue NULL Texte affiché pour les valeurs NULL
.timer on Affiche la durée de chaque requête
.read script.sql Exécute un fichier SQL
.output fichier.txt Écrit les résultats dans un fichier (.output stdout : retour à l’écran)
.once fichier.txt Écrit le prochain résultat seulement dans un fichier
.shell ls ou .system ls Exécute une commande du système
.dbinfo Informations sur le fichier de base
.quit ou .exit ou Ctrl+d Quitte
.headers on
.mode table
SELECT * FROM essai;
Mode Rendu
list (défaut) Valeurs séparées par |
column Colonnes alignées
table Tableau avec bordures ASCII
box Tableau avec bordures Unicode
markdown Tableau Markdown
csv Valeurs séparées par des virgules
json Tableau JSON
line Une valeur par ligne (équivalent de l’affichage vertical)
insert Instructions INSERT

.mode seul affiche le mode courant.

Fenêtre de terminal
sqlite3 boutique.db "SELECT COUNT(*) FROM essai;" # une requête
sqlite3 boutique.db < script.sql # un fichier
sqlite3 -header -column boutique.db "SELECT * FROM essai;" # avec options d'affichage
sqlite3 -csv -header boutique.db "SELECT * FROM essai;" > export.csv # export CSV
sqlite3 -json boutique.db "SELECT * FROM essai;" # sortie JSON
sqlite3 boutique.db ".tables" # commande à point
sqlite3 boutique.db ".schema essai"
Option Rôle
-header, -noheader Avec ou sans noms de colonnes
-column, -csv, -json, -markdown, -table, -box, -line Mode d’affichage
-separator ';' Séparateur en mode list ou csv
-cmd '.timer on' Exécute une commande avant de commencer
-bail S’arrête à la première erreur dans un script
-readonly Lecture seule

La saisie continue (prompt ...>) tant que l’instruction ne se termine pas par ;.

SELECT id,
texte
FROM essai
WHERE id > 0;

Exécuté à chaque ouverture du client :

.headers on
.mode table
.nullvalue NULL
.timer off
PRAGMA foreign_keys = ON;

Les réglages de PRAGMA (comme les clés étrangères) sont propres à chaque connexion : ce fichier évite de les oublier.

SELECT sqlite_version();
PRAGMA database_list;
PRAGMA table_info(essai); -- colonnes d'une table
PRAGMA foreign_keys; -- 1 si les clés étrangères sont vérifiées
SELECT name FROM sqlite_master WHERE type = 'table'; -- tables (table système sqlite_master)
Symptôme Piste
La saisie semble bloquée sur ...> Instruction non terminée : ajouter ;
Error: no such table Mauvais fichier ouvert (.databases) ou table absente (.tables)
Parse error: near "." Une commande à point est tapée après du SQL sur la même ligne : la passer seule sur sa ligne
Accents illisibles Terminal en UTF-8