SQLite : console (client sqlite3)
Le client sqlite3 est la console de SQLite. Les exemples utilisent le fichier boutique.db.
Ouvrir une base
Section intitulée « Ouvrir une base »sqlite3 boutique.db # ouvre (ou crée) le fichiersqlite3 # base temporaire en mémoire, perdue à la sortiesqlite3 -readonly boutique.db # ouverture en lecture seuleCommandes à point
Section intitulée « Commandes à point »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 |
Modes d’affichage
Section intitulée « Modes d’affichage ».headers on.mode tableSELECT * 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.
Exécuter du SQL sans ouvrir la console
Section intitulée « Exécuter du SQL sans ouvrir la console »sqlite3 boutique.db "SELECT COUNT(*) FROM essai;" # une requêtesqlite3 boutique.db < script.sql # un fichiersqlite3 -header -column boutique.db "SELECT * FROM essai;" # avec options d'affichagesqlite3 -csv -header boutique.db "SELECT * FROM essai;" > export.csv # export CSVsqlite3 -json boutique.db "SELECT * FROM essai;" # sortie JSONsqlite3 boutique.db ".tables" # commande à pointsqlite3 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 |
Instructions sur plusieurs lignes
Section intitulée « Instructions sur plusieurs lignes »La saisie continue (prompt ...>) tant que l’instruction ne se termine pas par ;.
SELECT id, texteFROM essaiWHERE id > 0;Fichier de configuration ~/.sqliterc
Section intitulée « Fichier de configuration ~/.sqliterc »Exécuté à chaque ouverture du client :
.headers on.mode table.nullvalue NULL.timer offPRAGMA foreign_keys = ON;Les réglages de PRAGMA (comme les clés étrangères) sont propres à chaque connexion : ce fichier évite de les oublier.
Quelques informations utiles
Section intitulée « Quelques informations utiles »SELECT sqlite_version();PRAGMA database_list;PRAGMA table_info(essai); -- colonnes d'une tablePRAGMA foreign_keys; -- 1 si les clés étrangères sont vérifiéesSELECT name FROM sqlite_master WHERE type = 'table'; -- tables (table système sqlite_master)Dépannage
Section intitulée « Dépannage »| 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 |
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Manuel : Command Line Shell For SQLite