psql

psql — PostgreSQL interactive terminal

https://www.postgresql.org/docs/current/app-psql.html

Voir aussi pgcli, rpg et usql.


Journaux liées à cette note :

Journal du vendredi 10 avril 2026 à 10:21 #postgresql, #tui, #cli, #JaiDécouvert

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/ash live wait event timeline with drill-down; pg_ash history integration
  • AI assistant/ask, /fix, /explain, /optimize, /text2sql, /yolo
  • DBA diagnostics — 15+ /dba commands: 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 markdown for docs-ready table output
  • Named queries — save and recall frequent queries
  • Session persistence — history and settings preserved across sessions
  • Multi-host failover-h host1,host2 tries 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)

source

Journal du mardi 06 août 2024 à 08:45 #postgresql, #JaiDécouvert, #L36

#JaiDécouvert la commande psql nommé \ir :

\ir or \include_relative filename

The \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 #coding, #DevOps, #snippets

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.