Requêtes avec la ligne de commande SQLite

SQLite fournie une interface en ligne de commande pour gérer nos bases de données, mais qu’arrive-t-il lorsque nous voulons exécuter des requêtes à partir d’un script? Si vous avez esssayé d’appeller SQLite à partir d’un script Bash en utilisant l’argument « -init », dans l’intention d’exécuter les requêtes SQL contenues dans un fichier sur la base de données, vous avez aussi remarqué qu’SQLite reste en mode interactif, nous forçant donc à surveiller la console et à la quitter à chaque fois. Cela devient un problème lorsque nous avons plusieurs (potentiellement gros) fichiers de requêtes à exécuter les uns après les autres, comme lorsqu’on doit construire et reconstruire une base de données de tests.

Si vous êtes ici, votre script contient probablement ces quelque chose comme suit:

sqlite3 -init requetes1.sql ma_base_de_donnees.db
sqlite3 -init requetes2.sql ma_base_de_donnees.db
sqlite3 -init requetes3.sql ma_base_de_donnees.db

Chaque commande individuelle nous laisse en mode intéreactif, ce qui nous force à utiliser la commande « .exit » pour permettre au script de continuer son exécution.

SQLite nous permet aussi d’utiliser l’opérateur de redirection d’entrée (input redirection operator) pour envoyer le contenu d’un fichier (ou d’une requête écrite entre guillemets simples) comme entrée (input) à une base de données. Comme ceci:

sqlite3 ma_base_de_donnees.db < requetes1.sql
sqlite3 ma_base_de_donnees.db < requetes2.sql
sqlite3 ma_base_de_donnees.db < requetes3.sql

Ce qui va rediriger le contenu de chaque fichier directement dans la base de données sans besoin d’intervention manuelle.

Si vous avez besoin de plus d’information sur l’utilisation de SQLite en ligne de commande, visitez la documentation officielle à https://sqlite.org/cli.html (en anglais).

Laisser un commentaire