Utiliser sqlite3 en ligne de commande

Exemples

Premier cas : tester plusieurs commandes et finalement sauvegarder le résultat


			utilisateur@monpc$ sqlite3
			> .read exo1.sql
			> .schema
			
			(affichages de sqlite)
			
			> .save base_exo1.db
		

Second cas : importer des tables csv dans une base de données puis effectuer une requête


			utilisateur@monpc$ sqlite3 exo2.db
			> .separator ','
			> .import extraction.csv table_pseudos
		

Détails des commandes

Ouvrir une base de données

La commande `.open nom_de_fichier` charge la base de données contenue dans le fichier indiqué

Pour ouvrir une base de données au lancement de sqlite, on peut également donner le nom de fichier en argument de la commande de lancement de *sqlite* : `sqlite3 nom_de_fichier`.

Dans les deux cas, les changements dans les données de la base sont automatiquement sauvegardés dans le fichier.

Sauvegarder la base de données

La commande `.save nom_de_fichier` sauvegarde des données courantes dans le fichier désigné, mais les chmngements ultérieurs ne sont pas automatiquement sauvegardés dans ce fichier. En revanche, si un fichier avait été nommé en argument de *sqlite* ou de la commande `.open`, alors les données continuent d'y être automatiquement sauvegardées.

Importer une table csv

Il convient changer le séparateur, afin que ce soit le même que dans le fichier csv.

Par exemple, pour importer un fichier csv dont le séparateur est la virgule `,` il faut saisir `.separator ','`.

On utilise ensuite `.import fichier_source table_cible`. Si `table_cible` n'existe pas, elle est automatiquement créée avec autant d'attrbuts que de colonnes dans le fichier csv, et nommés d'après la première ligne. Pour choisir le domaine des attributs, il faut créer soi-même la table avant d'importer le fichier.

Exécuter un ensemble de commandes sql

On le fait avec `.read nom_du_fichier`.

De tels fichers ont habituellement l'extension `.sql` mais on peut mettre celle que l'on veut.

Afficher la structure d'une table, de la base de données

On utilise la commande `.schema table` pour afficher la commande ayant permis de définir la table dont on a donné le nom en paramètre de `.schema`.

La commande `.schema`, sans paramètre, affiche les commandes ayant permis de définir toutes les tables de la base de données.

Clés primaires, clés étrangèes

Par défaut, *sqlite3* n'effectue pas les vérifications attendues sur les données des champs `PRIMARY KEY` et `FOREIGN KEY`.

Dans les deux cas, il faut ajouter la directive `NOT NULL` juste après la déinition du domaine.