L’outil de ligne de commande sqlite3

dernière modification le 6 juillet 2020

Dans cette partie du tutoriel SQLite, nous abordons l’outil de ligne de commande sqlite3.

L’outil sqlite3

L’outil sqlite3 est un frontal basé sur un terminal pour la bibliothèque SQLite qui peut évaluer les requêtes de manière interactive et afficher les résultats dans plusieurs formats.Il peut également être utilisé dans des scripts.

Sur l’écran du terminal, nous voyons l’invite suivante de l’outil sqlite3 :

La commande .help est l’une des métacommandes de l’outil sqlite3 ; elle liste toutes les métacommandes. Les commandes .exit et .quit permettent de quitter la session sqlite3. Nous pouvons également utiliser la combinaison de touches Ctrl+D pour quitter sqlite3. La commande .databases montre les bases de données attachées. La commande .tables liste les tables disponibles.

La touche Ctrl+L efface l’écran et la touche Ctrl+U efface la ligne courante. (Lorsque construit avec la bibliothèque readline.)

Créer une base de données avec sqlite3

La base de données SQLite complète est stockée dans un seul fichier disque multiplateforme. Nous utilisons l’outil de ligne de commande sqlite3 pour créer un nouveau fichier de base de données.

$ sqlite3 test.db

Ici, nous créons une nouvelle test.db base de données. Si le fichier existe, il est ouvert.

Méta-commandes sqlite3 de base

Après, nous décrivons certaines des méta-commandes de l’outil sqlite3.

sqlite> .tablesAuthors Cars Friends ReservationsBooks Customers Orders 

La commande .tables montre les tables disponibles.

sqlite> SELECT * FROM Friends;1|Jane|F2|Thomas|M3|Franklin|M4|Elisabeth|F5|Mary|F6|Lucy|F7|Jack|M

Ici nous obtenons la sortie d’une SELECT déclaration. Par défaut, le mode de sortie est line et le séparateur est |.

sqlite> .separator :sqlite> SELECT * FROM Friends;1:Jane:F2:Thomas:M3:Franklin:M4:Elisabeth:F5:Mary:F6:Lucy:F7:Jack:M

Ici, nous avons utilisé un nouveau séparateur à deux points.

Il existe plusieurs autres modes de sortie disponibles. L’exemple suivant montre le mode de sortie column.

Cet exemple montre comment les données sont formatées dans le mode colonne de sqlite. La commande .headers a également été utilisée pour afficher les en-têtes de colonne. Par défaut, les en-têtes sont cachés.

La commande .width ajuste la taille des colonnes.(Cette méta commande n’est pertinente que pour les tableaux en mode colonne.)

La largeur des colonnes n’est pas suffisante pour afficher correctement toutes les données.

Ici, nous modifions la largeur des colonnes. La première colonne aura une largeur de 15 caractères et la seconde de 18.

sqlite> .shell clear

La commande .shell exécute des programmes système. Dans notre cas, nous effaçons l’écran avec la commande clear. (L’équivalent sous Windows est cls.)

La commande .show énumère divers paramètres. Il s’agit notamment du mode de sortie, du séparateur utilisé dans le mode liste et de l’activation ou non des en-têtes.

sqlite> .schema CarsCREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name TEXT, Price INTEGER);

La commande .schema présente la structure de la table. Elle donne le SQL DDL pour créer la table.

Il est possible de modifier l’invite de la sqlite3 avec la commande .prompt.

sqlite> .prompt "> " ". "> SELECT * FROM Cars. LIMIT 2;Id Name Price ---------- ---------- ----------1 Audi 52642 2 Mercedes 57127 > 

Il existe deux invites. L’une est l’invite principale et l’autre est une invite de continuation. L’invite principale par défaut est sqlite> et l’invite de continuation par défaut est ...>.

Exécution de SQL depuis le shell

Nous pouvons exécuter des commandes SQL depuis le shell.

Ici, nous avons exécuté de manière non interactive une instruction SELECT ; toutes les voitures de la table Cars ont été sélectionnées.

Dumping de tables

Il est possible de dumper des tables au format SQL sur le disque. De cette façon, nous pouvons facilement sauvegarder la structure et les données d’une table de base de données.

Nous avons la table Cars.

Nous allons utiliser la commande .dump pour vidanger la table.

La commande .dump nous montre le SQL nécessaire pour créer la table Cars.

sqlite> .output cars2.sqlsqlite> .dump Cars

Nous pouvons également rediriger la sortie vers un fichier. La commande .output redirigera la sortie vers le fichier cars2.sql.

Nous montrons le contenu du fichier cars2.sql avec la catcommande.

Lecture de SQL

Nous pouvons lire les instructions SQL à partir d’un nom de fichier avec la .readcommande.

Ici, nous avons exécuté une série de commandes. Nous déposons la table et la lisons à partir de cars.sql.

Le fichier .sqlite_history

Les commandes et les instructions sont archivées dans le fichier .sqlite_history.Le fichier se trouve dans le répertoire d’accueil.

$ tail -5 ~/.sqlite_history .tablesSELECT * FROM Cars;.mode column.headers on.show

En utilisant la commande tail, on affiche les cinq dernières entrées.

Fichier de ressources

L’outil sqlite3 possède un fichier de ressources appelé .sqliterc. Il est situé dans le répertoire home. S’il n’existe pas de tel fichier, nous pouvons simplement le créer.Le fichier de ressources peut contenir des méta-commandes, ou des instructions SQL ordinaires.Cependant, nous devons éviter d’utiliser SQL dans le fichier.

$ cat .sqliterc .mode column.headers on.nullvalue NULL 

Voici un exemple simple de fichier de ressources. Il comporte trois méta-commandes. Avec un fichier de ressources, nous n’avons pas à exécuter à nouveau les méta-commandes lorsque nous démarrons l’outil sqlite3. Elles seront exécutées automatiquement au démarrage de l’outil.

Nous avons un message disant que l’outil a chargé des ressources au début.

Options de ligne de commande

L’outil a plusieurs options de ligne de commande. Elles dupliquent pour la plupart les méta-commandes. Notez que les options de ligne de commande écrasent les méta-commandes du fichier de ressources.

$ sqlite3 --help-- Loading resources from /home/janbodnar/.sqlitercUsage: sqlite3 FILENAME FILENAME is the name of an SQLite database. A new database is createdif the file does not previously exist.OPTIONS include: -ascii set output mode to 'ascii' -bail stop after hitting an error -batch force batch I/O -column set output mode to 'column' -cmd COMMAND run "COMMAND" before reading stdin -csv set output mode to 'csv' -echo print commands before execution -init FILENAME read/process named file -header turn headers on or off -help show this message -html set output mode to HTML -interactive force interactive I/O -line set output mode to 'line' -list set output mode to 'list' -lookaside SIZE N use N entries of SZ bytes for lookaside memory -mmap N default mmap size set to N -newline SEP set output row separator. Default: '\n' -nullvalue TEXT set text string for NULL values. Default '' -pagecache SIZE N use N slots of SZ bytes each for page cache memory -scratch SIZE N use N slots of SZ bytes each for scratch memory -separator SEP set output column separator. Default: '|' -stats print memory stats before each finalize -version show SQLite version -vfs NAME use NAME as the default VFS

L’option --help nous donne la liste de toutes les options disponibles avec une brève description.

Nous commençons l’outil sqlite3 avec les options -echo-line, et -noheader. L’instruction SELECT est répétée/échoquée après avoir été lancée. La sortie est en mode ligne et nous n’avons pas d’en-têtes affichés.

Avec l’option -version nous obtenons la version de sqlite3.

Avec l’option -html, nous pouvons sortir les résultats sous forme de simples tableaux HTML.