Client psql
Quelques possibilités si vous disposez d’une machine sur laquelle on peut installer psql
et sur laquelle on peut établir des tunnels ssh
Installer
Utiliser
Remplacer id_ent
par votre identifiant ENT dans la suite.
Saisissez votre mot de passe (attention : pas d’écho)
$ ssh id_ent@etu-pgsql.math.univ-paris-diderot.fr -L 5436:localhost:5432 -N
(id_ent@etu-pgsql.math.univ-paris-diderot.fr) Password for id_ent@etu-pgsql.math.univ-paris-diderot.fr:
$
Utilisez votre tunnel SSH pour accéder au serveur PostGres. Dans une autre fenêtre terminal, lancer psql
, saisissez à nouveau votre mot de passe.
$ psql -p 5436 -U id_ent -W -h localhost -d bd_2023-24
Password for id_ent:
bd_2023-24=# \?
Vous êtes maintenant dans une session sur le serveur PostGres. Vous êtes connecté au catalogue bd_2023-24
Vous pouvez utiliser une grande partie des commandes magiques de psql
world
)
bd_2023-24=# SET search_path TO world ;
SET
bd_2023-24=# \d
+--------+-----------------+-------+-----------+
| Schema | Name | Type | Owner |
|--------+-----------------+-------+-----------|
| world | city | table | boucheron |
| world | country | table | boucheron |
| world | countrylanguage | table | boucheron |
+--------+-----------------+-------+-----------+
(3 rows)
bd_2023-24=# \d city
+-------------+--------------+-----------+
| Column | Type | Modifiers |
|-------------+--------------+-----------|
| id | integer | not null |
| name | text | not null |
| countrycode | character(3) | not null |
| district | text | not null |
| population | integer | not null |
+-------------+--------------+-----------+
Indexes:
"city_pkey" PRIMARY KEY, btree (id)
Foreign-key constraints:
"city_country_fk" FOREIGN KEY (countrycode) REFERENCES country(countrycode) ON UPDATE CASCADE ON DELETE SET NULL DEFE>
Referenced by:
TABLE "country" CONSTRAINT "country_capital_fkey" FOREIGN KEY (capital) REFERENCES city(id)
bd_2023-24=# \conninfo
You are connected to database "bd_2023-24" as user "id_end" on host "localhost" (address "127.0.0.1") at port "5436".
bd_2023-24=# \e
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/nvim
4. /usr/bin/vim.tiny
5. /usr/bin/emacs
6. /usr/bin/code
7. /bin/ed
Choose 1-7 [1]: 6
Sous mon éditeur préféré (vs code
ici), j’edite une requête
SELECT ci.name, co.name_country
FROM
JOIN
world.city ci ON (
world.country co =co.countrycode AND
ci.countrycodeid = co.capital
ci.
) ORDER BY co.name_country;
sauvegardée dans un fichier de chemin d’accès /tmp/psql.edit.23866.sql
(construit automatiquement)
Dans ma session sur bd_2023-24
, je peux maintenant inclure et exécuter cette requête.
bd_2023-24=# \i /tmp/psql.edit.23866.sql
name | name_country
-----------------------------------+---------------------------------------
Kabul | Afghanistan
Tirana | Albania
Alger | Algeria
Fagatogo | American Samoa
Andorra la Vella | Andorra
Luanda | Angola
:
...
Entrez q
pour sortir du pager
Il est commode d’archiver le travail d’une séance de TP dans un fichier *.sql
. On peut créer les fichiers avant la session ou en cours de session (ici dans un dialecte d’Unix)
bd_2023-24=# \! touch tp-x.sql
bd_2023-24=# -- editer tp-x.sql
bd_2023-24=# \e tp-x.sql
bd_2023-24=# -- charger/exécuter tp-x.sql
bd_2023-24=# \i tp-x.sql