psql
psql — PostgreSQL interactive terminal
Journaux liées à cette note :
Journal du vendredi 10 avril 2026 à 10:21
Dans Postgres Weekly numéro 643 #JaiDécouvert rpg :
rpg — modern Postgres terminal written in Rust. psql-compatible, with built-in DBA diagnostics and AI assistant
La liste des fonctionnalités de rpg me donne envie de le tester pour voir si, à l'usage, il est une bonne alternative à psql, pgcli ou usql.
Features
- psql-compatible —
\-commands are standard psql meta-commands (\d,\dt,\copy,\watch, ...);/-commands are rpg extensions — both AI and non-AI. Same muscle memory, clearly distinct additions.- Active Session History —
/ashlive wait event timeline with drill-down; pg_ash history integration- AI assistant —
/ask,/fix,/explain,/optimize,/text2sql,/yolo- DBA diagnostics — 15+
/dbacommands: activity, locks, bloat, indexes, vacuum, replication, config- Schema-aware completion — tab completion for tables, columns, functions, keywords
- Lua plugin system — extend rpg with custom
/-commands written in Lua- TUI pager — scrollable pager for large result sets
- Syntax highlighting — SQL keywords, strings, operators; EXPLAIN plans; color-coded errors/warnings
- Markdown output —
\pset format markdownfor docs-ready table output- Named queries — save and recall frequent queries
- Session persistence — history and settings preserved across sessions
- Multi-host failover —
-h host1,host2tries each in order, first success wins- SSH tunnel — connect through bastion hosts without manual port-forwarding
- Config profiles — per-project
.rpg.toml- Shell backtick substitution — dynamic prompts via
PROMPT1='[git branch --show-current] %/ # '- Status bar — connection info, transaction state, timing
- Cross-platform — single static binary: Linux, macOS, Windows (x86_64 + aarch64)
Journal du mardi 06 août 2024 à 08:45
#JaiDécouvert la commande psql nommé \ir :
\iror\include_relativefilenameThe \ir command is similar to \i, but resolves relative file names differently. When executing in interactive mode, the two commands behave identically. However, when invoked from a script, \ir interprets file names relative to the directory in which the script is located, rather than the current working directory.
-- from
J'ai trouvé cette commande via Fwd: psql include file using relative path.
Cela faisait des années que j'avais besoin de cette fonctionnalité et, étrangement, je ne l'ai découverte seulement aujourd'hui 🤔.
Exemple d'utilisation https://github.com/stephane-klein/sklein-pkm-engine/blob/8938d7a2c19ed8f741bd38162882e9517c739c30/sqls/init.sql#L36
Journal du dimanche 28 juillet 2024 à 09:14
Pour des raisons Developer eXperience — convivialité — j'apprécie d'avoir la possibilité de me connecter facilement à un serveur PostgreSQL distant, par exemple, pour :
- Simplement ouvrir un terminal interactif psql ;
- Exécuter un fichier SQL local sur un serveur distant ;
- Exécuter un script local, Python, JavaScript ou autre sur un serveur distant.
Cependant, par choix déontologique, je préfère ne jamais ouvrir PostgreSQL sur l'extérieur.
Je me limite à ouvrir uniquement les services SSH et HTTP sur l'extérieur.
Pour contourner cette limitation, j'utilise des tunnels SSH pour accéder à mes serveurs PostgreSQL distants.
Dans ce dossier /deployment/develop, voici mes scripts idiosyncrasiques que j'ai l'habitude d'utiliser pour ouvrir ou fermer mes tunnels SSH :
Voici un exemple d'utilisation :
$ ./scripts/open_ssh_tunnel_postgres.sh
$ ./scripts/enter-in-pg.sh ../../init.sql
$ ../../import.js
$ ./scripts/close_ssh_tunnel_postgres.sh
Dans les scripts open_ssh_tunnel_postgres.sh et close_ssh_tunnel_postgres.sh, j'utilise simplement nohup pour exécuter ssh en tâche de fond et récuperer son PID.