Exécuter des instructions SQL depuis un fichier
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Objectif
Savoir exécuter des instructions SQL depuis un fichier.
Mise en situation
Il est assez fréquent d'avoir une liste d'instructions SQL pré-définies à exécuter.
Vous pourriez recevoir le code SQL pour créer la structure d'une base de données à des fins de test, par exemple. Ou vous pourriez vouloir migrer une base de données de MySQL vers une base de données PostgreSQL, ce qui se traduira par l'exécution d'un long code SQL pour reconstruire la structure des tables et insérer les données dans PostgreSQL.
Dans ces cas, il est intéressant d'exécuter un fichier contenant une liste de requêtes SQL, plutôt que de les entrer une par une dans un client, ou de les copier-coller.
Syntaxe :
Pour exécuter un fichier contenant du code SQL, utiliser la commande PostgreSQL \i chemin/fichier.sql
:
chemin
désigne le répertoire dans lequel est le fichierfichier.sql
,Le dossier de travail de
psql
est le dossier dans lequel il a été lancé, le script peut être lancé à partir de son dossierhome
pour en être indépendant (~/.../fichier.sql
),Chaque commande doit être terminée par un
;
.
user=> \i chemin/fichier.sql
Méthode : Programmer une base de données avec PostgreSQL
Pour programmer une base de données sous PostgreSQL, voici une méthode générale :
Rendez-vous dans un répertoire de travail :
cd /home/me/bdd1
.Créez ou ouvrez un fichier texte
bdd.sql
avec un éditeur de texte.Ouvrez un terminal et exécutez votre client psql.
Écrivez votre code SQL, et testez-le au fur et à mesure :
\i
.bdd.sql
Conseil : Tester votre code régulièrement
Afin de tester régulièrement votre base de données, pensez à insérer en début de script des instructions de destruction des tables.
On supprime les tables dans l'ordre inverse de leur création, on peut ajouter la clause IF EXISTS
afin d'éviter les erreurs lorsqu'une exécution précédente avait déjà échoué.
DROP TABLE IF EXISTS t2 ;
DROP TABLE IF EXISTS t1 ;
CREATE TABLE t1 (a VARCHAR PRIMARY KEY);
CREATE TABLE t2 (a VARCHAR REFERENCES t1(a));
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.