psql
psql — terminal interactif
PostgreSQL™
Synopsis
psql [
option
...] [
nombase
[
nomutilisateur
]]
Description
psql est une interface en mode
texte pour PostgreSQL™. Il
vous permet de saisir des requêtes de façon interactive, de les
exécuter sur PostgreSQL™ et
de voir les résultats de ces requêtes. Alternativement, les entrées
peuvent êtres lues à partir d'un fichier. De plus, il fournit un
certain nombre de méta-commandes et plusieurs fonctionnalités style
shell pour faciliter l'écriture des scripts et automatiser un
nombre varié de tâches.
Options
-
-a,
--echo-all
-
Affiche toutes les lignes en entrée sur la sortie standard
lorsqu'elles sont lues. Ceci est plus utile dans le
traitement de scripts que dans le mode interactif. C'est
équivalent à initialiser la variable ECHO à all.
-
-A,
--no-align
-
Bascule dans le mode d'affichage non aligné. (Le mode
d'affichage par défaut est aligné.)
-
-c
commande
,
--command
commande
-
Indique que psql doit
exécuter une chaîne de commande,
commande
, puis s'arrêter. Cette
option est utile dans les scripts shell.
commande
doit être soit
une chaîne de commandes complètement analysable par le
serveur (c'est-à-dire qui ne contient aucune des
fonctionnalités spécifiques de psql), soit une seule commande
antislash. Du coup, vous ne pouvez pas mixer les commandes
SQL et les méta-commandes
psql avec cette option. Pour
réussir ceci, vous pouvez envoyer la chaîne dans un tube vers
psql comme ceci : echo "\x \\ SELECT * FROM foo;" | psql.
(\\ est la méta-commande
séparateur.)
Si la chaîne de commandes contient plusieurs commandes SQL,
elles sont traitées dans une seule transaction sauf si des
commandes
BEGIN
/
COMMIT
explicites sont
inclues dans la chaîne pour la diviser en plusieurs
transactions. Ceci est différent du comportement adopté quand
la même chaîne est envoyée dans l'entrée standard de
psql.
-
-d
nombase
,
--dbname
nombase
-
Indique le nom de la base de données où se connecter. Ceci
est équivalent à spécifier
nombase
comme premier argument de
la ligne de commande qui n'est pas une option.
-
-e,
--echo-queries
-
Copie toutes les commandes qui sont envoyées au serveur sur
la sortie standard. Ceci est équivalent à initialiser la
variable ECHO à queries.
-
-E,
--echo-hidden
-
Affiche les requêtes réelles générées par
\d
et autres commandes
antislash. Vous pouvez utiliser ceci pour étudier les
opérations internes de psql.
Ceci est équivalent à initialiser la variable ECHO_HIDDEN dans psql.
-
-f
nomfichier
,
--file
nomfichier
-
Utilise le fichier
nomfichier
comme source des
commandes au lieu de lire les commandes de façon interactive.
Une fois que le fichier est entièrement traité, psql se termine. Ceci est globalement
équivalent à la commande interne
\i
.
Si
nomfichier
est un
- (tiret), alors l'entrée standard
est lue.
Utiliser cette option est légèrement différent d'écrire
psql <
nomfichier
. En général, les
deux feront ce que vous souhaitez mais utiliser -f active certaines fonctionnalités
intéressantes comme les messages d'erreur avec les numéros de
ligne. Il y a aussi une légère chance qu'utiliser cette
option réduira la surcharge du lancement. D'un autre côté, la
variante utilisant la redirection de l'entrée du shell doit
(en théorie) pour ramener exactement le même affichage que
celui que vous auriez eu en saisissant tout manuellement.
-
-F
séparateur
,
--field-separator
séparateur
-
Utilisez
séparateur
comme champ séparateur pour un affichage non aligné. Ceci est
équivalent à
\pset
fieldsep
ou
\f
.
-
-h
nomhôte
,
--host
nomhôte
-
Indique le nom d'hôte de la machine sur lequel le serveur est
en cours d'exécution. Si la valeur commence avec un slash,
elle est utilisée comme répertoire du socket de domaine Unix.
-
-H,
--html
-
Active l'affichage en tableau HTML. Ceci est équivalent à \pset format html ou à la commande
\H
.
-
-l,
--list
-
Liste toutes les bases de données disponibles puis quitte.
Les autres option non relatives à la connexion sont ignorées.
Ceci est similaire à la commande interne
\list
.
-
-L
nomfichier
,
--log-file
nomfichier
-
Écrit tous les résultats des requêtes dans le fichier
nomfichier
en plus de
la destination habituelle.
-
-o
nomfichier
,
--output
nomfichier
-
Dirige tous les affichages de requêtes dans le fichier
nomfichier
. Ceci est
équivalent à la commande
\o
.
-
-p
port
,
--port
port
-
Indique le port TCP ou l'extension du fichier socket de
domaine local Unix sur lequel le serveur attend les
connexions. Par défaut, il s'agit de la valeur de la variable
d'environnement PGPORT ou, si elle
n'est pas initialisée, le port spécifié au moment de la
compilation, habituellement 5432.
-
-P
affectation
,
--pset
affectation
-
Vous permet de spécifier les options d'affichage dans le
style de
\pset
sur la ligne de commande. Notez que, ici, vous devez séparer
nom et valeur avec un signe égal au lieu d'un espace. Du
coup, pour initialiser le format d'affichage en LaTeX, vous
devez écrire -P format=latex.
-
-q,
--quiet
-
Indique que psql doit
travailler silencieusement. Par défaut, il affiche des
messages de bienvenue et des informations diverses. Si cette
option est utilisée, rien de ceci n'est affiché. C'est utile
avec l'option -c. À l'intérieur de
psql, vous pouvez aussi
initialiser la variable QUIET pour
arriver au même effet.
-
-R
séparateur
,
--record-separator
séparateur
-
Utilisez
séparateur
comme séparateur d'enregistrement pour un affichage non
aligné. Ceci est équivalent à la commande
\pset recordsep
.
-
-s,
--single-step
-
S'exécute en mode étape par étape. Ceci signifie qu'une
intervention de l'utilisateur est nécessaire avant l'envoi de
chaque commande au serveur, avec une option pour annuler
l'exécution. Utilisez cette option pour déboguer des scripts.
-
-S,
--single-line
-
S'exécute en mode simple ligne où un retour à la ligne
termine une commande SQL, de la même façon qu'un
point-virgule.
Note
Ce mode est fourni pour ceux qui insistent pour l'avoir,
mais vous n'êtes pas nécessairement encouragé à
l'utiliser. En particulier, si vous mixez SQL et méta-commandes sur une ligne,
l'ordre d'exécution n'est pas toujours clair pour
l'utilisateur non expérimenté.
-
-t,
--tuples-only
-
Désactive l'affichage des noms de colonnes et le pied de page
contenant le nombre de résultats, etc. Ceci est équivalent à
la méta-commande
\t
.
-
-T
options_table
,
--table-attr
options_table
-
Permet d'indiquer les options à placer à l'intérieur d'une
balise table en
HTML. Voir
\pset
pour plus de détails.
-
-u
-
Force psql à demander le nom
et le mot de passe de l'utilisateur avant de se connecter à
la base de données.
Cette option est obsolète, car elle est conceptuellement
mauvaise. (Demander un nom d'utilisateur autre que celui par
défaut et demander un mot de passe parce que le serveur
l'exige sont deux choses tout à fait différentes.) Il est
conseillé d'utiliser les options -U
et -W à la place.
-
-U
nomutilisateur
,
--username
nomutilisateur
-
Se connecte à la base de données en tant que l'utilisateur
nomutilisateur
au lieu
de celui par défaut. (Vous devez aussi avoir le droit de le
faire, bien sûr.)
-
-v
affectation
,
--set
affectation
,
--variable
affectation
-
Réalise une affectation de variable comme la commande interne
\set
. Notez que
vous devez séparer nom et valeur par un signe égal sur la
ligne de commande. Pour désinitialiser une variable, enlevez
le signe d'égalité. Pour simplement initialiser une variable
sans valeur, utilisez le signe égal sans passer de valeur.
Ces affectations sont réalisées lors de la toute première
étape du lancement, du coup les variables réservées à des
buts internes peuvent être écrasées plus tard.
-
-V,
--version
-
Affiche la version de psql
et quitte.
-
-W,
--password
-
Force psql à demander un mot
de passe avant de se connecter à une base de données.
psql devrait automatiquement
demander un mot de passe chaque fois que le serveur réclame
une authentification par mot de passe. Néanmoins, la
détection de demande de mot de passe n'est actuellement pas
totalement fiable, d'où cette option pour forcer une demande.
Si aucune demande de mot de passe n'est effectuée et que le
serveur requiert une authentification par mot de passe, la
tentative de connexion échoue.
Cette option reste configurée pour la session complète, même
si vous modifiez la connexion de la base de données avec la
méta-commande
\connect
.
-
-x,
--expanded
-
Active le mode de formatage de table étendu. Ceci est
équivalent à la commande
\x
.
-
-X,,
--no-psqlrc
-
Ne lit pas le fichier de démarrage (ni le fichier système
psqlrc ni celui de l'utilisateur
~/.psqlrc).
-
-1,
--single-transaction
-
Quand psql exécute un script
avec l'option -f, ajouter cette
option englobe le script avec les instructions
BEGIN
/
COMMIT
pour tout faire dans
une seule transaction. Ceci nous assure que soit toutes les
commandes se terminent avec succès, soit aucune modification
n'est enregistrée.
Si le script utilise lui-même
BEGIN
,
COMMIT
ou
ROLLBACK
, cette option
n'aura pas les effets désirés. De plus, si le script contient
toute commande qui ne peut pas être exécutée à l'intérieur
d'un bloc de transaction, indiquer cette option provoquera
l'échec de cette commande (et du coup de la transaction
entière).
-
-?,
--help
-
Affiche de l'aide sur les arguments en ligne de commande de
psql et quitte.
Code de sortie
psql renvoie 0 au shell s'il se
termine normalement, 1 s'il y a eu une erreur fatale de son fait
(pas assez de mémoire, fichier introuvable), 2 si la connexion au
serveur s'est interrompue ou a été annulée, 3 si une erreur est
survenue dans un script et si la variable ON_ERROR_STOP a été initialisée.
Usage
Se connecter à une base de données
psql est une application client
PostgreSQL™ standard. Pour
se connecter à une base de données, vous devez connaître le nom
de votre base de données cible, le nom de l'hôte et le numéro de
port du serveur ainsi que le nom de l'utilisateur que vous
souhaitez connecter. psql peut
connaître ces paramètres à partir d'options en ligne de commande,
respectivement -d, -h, -p et -U. Si un argument autre qu'une option est
rencontré, il est interprété comme le nom de la base de données
(ou le nom de l'utilisateur si le nom de la base de données est
déjà donné). Toutes les options ne sont pas requises, des valeurs
par défaut sont applicables. Si vous omettez le nom de l'hôte,
psql se connecte via un socket
de domaine Unix à un serveur sur l'hôte local ou via TCP/IP sur
localhost pour les machines qui n'ont
pas sockets de domaine Unix. Le numéro de port par défaut est
déterminé au moment de la compilation. Comme le serveur de bases
de données utilise la même valeur par défaut, vous n'aurez pas
besoin de spécifier le port dans la plupart des cas. Le nom de
l'utilisateur par défaut est votre nom d'utilisateur Unix, de
même pour le nom de la base de données par défaut. Notez que vous
ne pouvez pas simplement vous connecter à n'importe quelle base
de données avec n'importe quel nom d'utilisateur. Votre
administrateur de bases de données doit vous avoir informé de vos
droits d'accès.
Quand les valeurs par défaut ne sont pas correctes, vous pouvez
vous simplifier la vie en configurant les variables
d'environnement PGDATABASE, PGHOST, PGPORT et/ou
PGUSER avec les valeurs appropriées (pour
les variables d'environnement supplémentaires, voir Section 29.12,
« Variables d'environnement »). Il est aussi
intéressant d'avoir un fichier ~/.pgpass pour éviter d'avoir régulièrement à
saisir des mots de passe. Voir Section 29.13,
« Fichier de mots de passe » pour plus
d'informations.
Si la connexion ne peut pas se faire, quelle qu'en soit la raison
(c'est-à-dire droits non suffisants, serveur arrêté sur l'hôte
cible, etc.), psql renvoie une
erreur et s'arrête.
Saisir des commandes SQL
Dans le cas normal, psql fournit
une invite avec le nom de la base de données sur laquelle
psql est connecté suivi par la
chaîne =>. Par exemple,
$ psql basetest
Welcome to psql 8.2.5, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
basetest=>
À l'invite l'utilisateur peut saisir des commandes
SQL. Ordinairement, les lignes
en entrée sont envoyées vers le serveur quand un point-virgule de
fin de commande est saisi. Une fin de ligne ne termine pas une
commande. Du coup, les commandes peuvent être saisies sur
plusieurs lignes pour plus de clarté. Si la commande est envoyée
et exécutée sans erreur, les résultats de la commande sont
affichés sur l'écran.
À chaque fois qu'une commande est exécutée, psql vérifie aussi les événements de
notification générés par LISTEN et NOTIFY.
Meta-commandes
Tout ce que vous saisissez dans psql qui commence par un antislash non
échappé est une méta-commande psql qui est traitée par psql lui-même. Ces commandes aident à rendre
psql plus utile pour
l'administration ou pour l'écriture de scripts. Les
méta-commandes sont plus souvent appelées les commandes slash ou
antislash.
Le format d'une commande psql
est l'antislash suivi immédiatement d'un verbe de commande et de
ses arguments. Les arguments sont séparés du verbe de la commande
et les uns des autres par un nombre illimité d'espaces blancs.
Pour inclure des espaces blancs dans un argument, vous devez
l'envelopper dans des guillemets simples. Pour inclure un
guillemet simple dans un argument, utilisez deux guillemets
simples. Tout ce qui est contenu entre des guillemets simples est
de plus sujet à des substitutions style C pour \n (nouvelle ligne), \t
(tabulation), \
chiffres
(octal) et \x
chiffres
(hexadécimal).
Si un argument sans guillemets commence avec un caractère
:, il est pris pour une variable
psql et la valeur de la variable
est utilisée à la place de l'argument.
Les arguments placés entre guillemets arrières (`) sont pris comme une ligne de commande passée au
shell. L'affichage de la commande (sans l'éventuel saut de ligne
à la fin) est pris comme valeur de l'argument. Cela s'applique
aussi aux séquences d'échappement ci-dessus.
Quelques commandes prennent un identifiant SQL (comme un nom de table) en argument. Ces
arguments suivent les règles de la syntaxe SQL : les lettres sans guillemets sont
forcées en minuscule alors que les guillemets doubles (") protègent les lettres de la conversion de casse
et autorisent l'incorporation d'espaces blancs dans
l'identifiant. À l'intérieur des guillemets doubles, les
guillemets doubles en paire se réduisent à un seul guillemet
double dans le nom résultant. Par exemple, FOO"BAR"BAZ est interprété comme fooBARbaz et "Un nom
""bizarre" devient Un nom "bizarre.
L'analyse des arguments se termine quand d'autres antislash non
entre guillemets surviennent. Ceci est pris pour le début d'une
nouvelle méta-commande. La séquence spéciale \\ (deux antislashes) marque la fin des arguments
et continue l'analyse des commandes SQL, si elles existent. De cette façon, les
commandes SQL et psql peuvent être mixées librement sur une
ligne. Mais dans tous les cas, les arguments d'une meta-commande
ne peuvent pas continuer après la fin de la ligne.
Les meta-commandes suivantes sont définies :
-
\a
-
Si le format actuel d'affichage d'une table est non aligné,
il est basculé à aligné. S'il n'est pas non aligné, il
devient non aligné. Cette commande est conservée pour des
raisons de compatibilité. Voir
\pset
pour une solution
plus générale.
-
\cd [
répertoire
]
-
Modifie le répertoire courant par
répertoire
. Sans argument, le
répertoire personnel de l'utilisateur devient le répertoire
courant.
Astuce
Pour afficher votre répertoire courant, utilisez
\!pwd.
-
\C [
titre
]
-
Initialise ou supprime le titre des tables affichées en
résultat d'une requête. Cette commande est équivalente à
\pset title
titre
. (Le nom de cette
commande provient de « caption », car elle avait précédemment
pour seul but d'initialiser l'en-tête dans une table
HTML.)
-
\connect (or
\c) [
nom_base
[
nom_utilisateur
] [
hôte
] [
port
] ]
-
Établie une nouvelle connexion à un serveur PostgreSQL™. Si la nouvelle
connexion est réussie, la connexion précédente est fermée.
Si une option parmi
nom_base
,
nom_utilisateur
,
hôte
et
port
est omise ou vaut
-, la valeur de ce même paramètre
de la connexion précédente est utilisée. S'il ny avait pas
encore de connexion, la valeur par défaut dans libpq est utilisée.
Si la tentative de connexion échoue (mauvais nom
d'utilisateur, accès refusé, etc.), la connexion précédente
est conservée si psql est
en mode interactif. Lors de l'exécution d'un script non
interactif, le traitement s'arrêtera immédiatement avec une
erreur. Cette distinction a été choisie pour deux raisons :
aider l'utilisateur face aux fautes de frappe et en tant
que mesure de précaution pour qu'un script n'agisse pas par
erreur sur la mauvaise base.
-
\copy {
table
[ (
liste_colonnes
) ] | (
requête
) } { from | to } {
nomfichier
| stdin |
stdout | pstdin | pstdout } [ with ] [ binary ] [ oids ] [
delimiter [ as ] '
caractère
' ] [ null [ as ]
'
chaîne
' ] [ csv [
header ] [ quote [ as ] '
caractère
' ] [ escape [ as ]
'
caractère
' ] [ force
quote
liste_colonnes
]
[ force not null
liste_colonnes
] ]
-
Réalise une opération de copy côté client. C'est une
opération qui exécute une commande SQL, COPY, mais au lieu que le
serveur lise ou écrive le fichier spécifié, psql lit ou écrit le fichier en
faisant le routage des données entre le serveur et le
système de fichiers local. Ceci signifie que l'accès et les
droits du fichier sont ceux de l'utilisateur local, pas
celui du serveur, et qu'aucun droit de superutilisateur
n'est requis.
La syntaxe de la commande est similaire à celle de la
commande COPY
SQL.
Notez que, à cause de cela, des règles spéciales d'analyse
s'appliquent à la commande
\copy
. En particulier,
les règles de substitution de variable et d'échappement
antislash ne s'appliquent pas.
\copy ... from stdin | to stdout
lit/écrit basé sur l'entrée standard de la commande ou sa
sortie standard respectivement. Toutes les lignes sont lues
à partir de la même source qui a lancé la commande, en
continuant jusqu'à ce que \. soit
lu ou que le flux parvienne à EOF. La sortie est envoyée au même
endroit que la sortie de la commande. Pour lire/écrire à
partir de l'entrée et de la sortie standard de psql, utilisez pstdin ou pstdout.
Cette option est utile pour peupler des tables en ligne à
l'intérieur d'un fichier script SQL.
Astuce
Cette opération n'est pas aussi efficace que la
commande
COPY
en
SQL parce que toutes
les données doivent passer au travers de la connexion
client/serveur. Pour les grosses masses de données, la
commande SQL est
préférable.
-
\copyright
-
Affiche le copyright et les termes de distribution de
PostgreSQL™.
-
\d [
modèle
],
\d+ [
modèle
]
-
Pour chaque relation (table, vue, index ou séquence)
correspondant au
modèle
, affiche toutes les
colonnes, leur types, le tablespace (s'il ne s'agit pas du
tablespace par défaut) et tout attribut spécial tel que
NOT NULL ou les valeurs par
défaut. Les index, contraintes, règles et déclencheurs
associés sont aussi affichés, ainsi que la définition de la
vue si la relation est une vue. (Ce qui « Correspond au modèle » est défini
ci-dessous.)
Le forme de la commande \d+ est
identique, sauf que des informations plus complètes sont
affichées : tout commentaire associé avec les colonnes de
la table est affiché, ainsi que la présence d'OID dans la
table.
Note
Si
\d
est
utilisé sans argument
modèle
, c'est équivalent en
plus commode à
\dtvs
qui affiche une
liste de toutes les tables, vues et séquence.
-
\da [
modèle
]
-
Liste toutes les fonctions d'agrégat disponibles, avec les
types de données sur lesquels elles opèrent. Si
modèle
est spécifié, seuls les
agrégats dont les noms commencent par le modèle sont
affichés.
-
\db [
modèle
],
\db+ [
modèle
]
-
Liste tous les tablespaces disponibles. Si
modèle
est spécifié, seuls les
tablespaces dont le nom correspond au modèle sont affichés.
Si + est ajouté au nom de la
commande, chaque objet est listé avec les droits associés.
-
\dc [
modèle
]
-
Liste toutes les conversions disponibles entre les
encodages de jeux de caractères. Si
modèle
est spécifié, seules les
conversions dont le nom correspond au modèle sont listées.
-
\dC
-
Liste toutes les conversions de types disponibles.
-
\dd [
modèle
]
-
Affiche les descriptions des objets correspondant au
modèle
ou de tous les
objets si aucun argument n'est donné. Mais dans tous les
cas, seuls les objets qui ont une description sont listés.
(Le terme « objet »
couvre les agrégats, les fonctions, les opérateurs, les
types, les relations (tables, vues, index, séquences,
objets larges), les règles et les déclencheurs.) Par
exemple, :
=> \dd version
Object descriptions
Schema | Name | Object | Description
------------+---------+----------+---------------------------
pg_catalog | version | function | PostgreSQL version string
(1 row)
Les descriptions des objets peuvent être ajoutées avec la
commande SQL
COMMENT.
-
\dD [
modèle
]
-
Liste tous les domaines disponibles. Si
modèle
est spécifié, seuls les
domaines correspondant sont affichés.
-
\df [
modèle
],
\df+ [
modèle
]
-
Liste toutes les fonctions disponibles avec leurs arguments
et les types en retour. Si
modèle
est spécifié, seules les
fonctions dont le nom correspond au modèle sont affichées.
Si la forme \df+ est utilisée, des
informations supplémentaires sur chaque fonction, dont le
langage et la description, sont proposées.
Note
Pour rechercher des fonctions prenant un argument ou
des valeurs de retour d'un type spécifique, utilisez
les capacités de recherche du paginateur pour parcourir
\df output.
Pour réduire les redondances, \df n'affiche pas les fonctions
d'entrées/sorties des types de données. Ceci est
implémenté en ignorant les fonctions qui acceptent ou
renvoient cstring.
-
\dg [
modèle
]
-
Liste tous les rôles des bases de données. Si
modèle
est spécifié, seuls les
rôles dont le nom correspond au modèle sont listés. (Cette
commande est maintenant réellement identique à \du.)
-
\distvS [
modèle
]
-
Ceci n'est pas le nom réel de la commande : les lettres
i, s,
t, v,
S correspondent respectivement à
index, séquence, table, vue et table système. Vous pouvez
spécifier une ou toutes ces lettres, dans n'importe quel
ordre, pour obtenir une liste de tous les objets
correspondants. La lettre S
restreint la liste aux objets système ; sans S, seuls les objets non système sont
affichés. Si + est ajouté au nom
de la commande, chaque objet est listé avec sa description
associée, si celle-ci est disponible.
Si
modèle
est
spécifié, seuls les objets dont les noms correspondent au
modèle sont listés.
-
\dl
-
Ceci est un alias pour
\lo_list
, qui affiche une
liste des objets larges.
-
\dn [
modèle
],
\dn+ [
modèle
]
-
Liste tous les schémas disponibles (tablespaces). Si
modèle
(une
expression régulière) est spécifiée, seuls les schémas dont
le nom correspond au modèle sont listés. Tout schéma
temporaire non local est supprimé. Si + est ajoutée au nom de la commande, chaque
objet est listé avec ses droits et description associés.
-
\do [
modèle
]
-
Liste tous les opérateurs disponibles avec leur opérande et
type en retour. Si
modèle
est spécifié, seuls les
opérateurs dont le nom correspond au modèle sont listés.
-
\dp [
modèle
]
-
Produit une liste de toutes les tables, vues et séquences
disponibles avec leur droits d'accès associés. Si
modèle
est spécifié,
seules les tables, vues et séquences dont le nom correspond
au modèle sont listées.
Les commandes GRANT et REVOKE sont utilisées pour configurer
les droits d'accès.
-
\dT [
modèle
],
\dT+ [
modèle
]
-
Liste tous les types de données ou seulement ceux dont le
nom correspond à
modèle
. La commande \dT+ affiche des informations
supplémentaires.
-
\du [
modèle
]
-
Liste tous les rôles de la base de données ou seulement
ceux dont le nom correspond au
modèle
.
-
\edit (ou
\e) [
nomfichier
]
-
Si
nomfichier
est
spécifié, le fichier est édité ; en quittant l'éditeur, son
contenu est recopié dans le tampon de requête. Si aucun
argument n'est fourni, le tampon de requête actuel est
copié dans un fichier temporaire qui est ensuite édité de
la même façon.
Le nouveau tampon de requête est ensuite ré-analysé suivant
les règles habituelles de psql, où le tampon complet est traité
comme une seule ligne. (Du coup, vous ne pouvez pas faire
de scripts de cette façon. Utilisez
\i
pour cela.) Ceci
signifie aussi que si la requête se termine avec (ou plutôt
contient) un point-virgule, elle est immédiatement
exécutée. Dans les autres cas, elle attend simplement dans
le tampon de requête.
Astuce
psql recherche les
variables d'environnement PSQL_EDITOR, EDITOR
et VISUAL (dans cet ordre) pour
connaître l'éditeur à utiliser. Si aucun n'est
initialisé, vi est utilisé
sur les systèmes Unix, notepad.exe sur les systèmes Windows.
-
\echo
texte
[ ... ]
-
Affiche les arguments sur la sortie standard séparés par un
espace et suivi par une nouvelle ligne. Ceci peut être
utile pour intégrer des informations sur la sortie des
scripts. Par exemple :
=> \echo `date`
Tue Oct 26 21:40:57 CEST 1999
Si le premier argument est -n sans
guillemets, alors la fin de ligne n'est pas écrite.
Astuce
Si vous utilisez la commande
\o
pour rediriger la
sortie de la requête, vous pourriez souhaiter utiliser
\qecho
au
lieu de cette commande.
-
\encoding [
codage
]
-
Initialise l'encodage du jeu de caractères du client. Sans
argument, cette commande affiche l'encodage actuel.
-
\f [
chaîne
]
-
Initialise le champ séparateur pour la sortie de requête
non alignée. La valeur par défaut est la barre verticale
(|). Voir aussi
\pset
comme moyen
générique de configuration des options d'affichage.
-
\g [ {
nomfichier
| |
commande
} ]
-
Envoie le tampon de requête en entrée vers le serveur et
stocke en option la sortie de la requête dans
nomfichier
ou envoie dans un
tube la sortie vers un autre shell Unix exécutant
commande
. Un simple
\g est virtuellement équivalent à
un point-virgule. Un \g avec
argument est une alternative en « un coup » à la commande
\o
.
-
\help (ou
\h) [
commande
]
-
Donne la syntaxe sur la commande SQL spécifiée. Si
commande
n'est pas spécifiée,
alors psql liste toutes
les commandes pour lesquelles une aide en ligne est
disponible. Si
commande
est un astérisque
(*), alors l'aide en ligne de
toutes les commandes SQL
est affichée.
Note
Pour simplifier la saisie, les commandes qui consistent
en plusieurs mots n'ont pas besoin d'être entre
guillemets. Du coup, il est correct de saisir
\help alter
table
.
-
\H
-
Active le format d'affichage HTML des requêtes. Si le format
HTML est déjà activé, il
est basculé au format d'affichage défaut (texte aligné).
Cette commande est pour la compatibilité mais voir
\pset
pour
configurer les autres options d'affichage.
-
\i
nomfichier
-
Lit l'entrée à partir du fichier
nomfichier
et l'exécute comme
si elle avait été saisie sur le clavier.
Note
Si vous voulez voir les lignes sur l'écran au moment de
leur lecture, vous devez initialiser la variable
ECHO à all.
-
\l (ou \list),
\l+ (ou \list+)
-
Liste les noms, propriétaires et codages des ensembles de
caractères de toutes les bases de données du serveur. Si
+ est ajouté au nom de la
commande, les descriptions des bases de données sont aussi
affichées.
-
\lo_export
loid
nomfichier
-
Lit l'objet large d'OID
loid
à partir de la
base de données et l'écrit dans
nomfichier
. Notez que ceci est
subtilement différent de la fonction serveur lo_export, qui agit avec les droits de
l'utilisateur avec lequel est exécuté le serveur de base de
données et sur le système de fichiers du serveur.
Astuce
Utilisez
\lo_list
pour trouver
l'OID de l'objet
large.
-
\lo_import
nomfichier
[
commentaire
]
-
Stocke le fichier dans un objet large PostgreSQL™. En option, il
associe le commentaire donné avec l'objet. Exemple :
foo=> \lo_import '/home/peter/pictures/photo.xcf' 'une
photo de moi'
lo_import 152801
La réponse indique que l'objet large a reçu l'ID 152801,
dont vous devez vous rappeler si vous souhaitez accéder de
nouveau à l'objet. Pour cette raison, il est recommandé de
toujours associer un commentaire lisible par un humain avec
chaque objet. Ils sont ensuite visibles avec la commande
\lo_list
.
Notez que cette commande est subtilement différente de la
fonction serveur lo_import car
elle agit en tant qu'utilisateur local sur le système de
fichier local plutôt qu'en tant qu'utilisateur du serveur
et de son système de fichiers.
-
\lo_list
-
Affiche une liste de tous les objets larges PostgreSQL™ actuellement stockés
dans la base de données, avec tous les commentaires fournis
par eux.
-
\lo_unlink
loid
-
Supprime l'objet large d'OID
loid
de la base de données.
Astuce
Utilisez
\lo_list
pour trouver
l'OID d'un objet
large.
-
\o [ {
nomfichier
| |
commande
} ]
-
Sauvegarde les résultats des requête suivantes dans le
fichier
nomfichier
ou
envoie via un tube les résultats à venir dans un shell Unix
séparé pour exécuter
command
. Si aucun argument
n'est spécifié, l'affichage de la requête est redirigé vers
la sortie standard.
Les « résultats de
requête » incluent toutes les tables, réponses
de commande et messages d'avertissement obtenus du serveur
de bases de données, ainsi que la sortie de différentes
commandes antislash qui envoient des requêtes à la base de
données (comme
\d
), mais sans messages
d'erreur.
Astuce
Pour intégrer du texte entre les résultats de requête,
utilisez
\qecho
.
-
\p
-
Affiche le tampon de requête actuel sur la sortie standard.
-
\password [
nom_utilisateur
]
-
Modifie le mot de passe de l'utilisateur indiqué (par
défaut, l'utilisateur en cours). Cette commande demande le
nouveau mot de passe, le chiffre et l'envoie au serveur
avec la commande
ALTER
ROLE
. Ceci vous assure que le nouveau mot
de passe n'apparaît pas en clair dans l'historique de la
commande, les traces du serveur ou encore ailleurs.
-
\pset
paramètre
[
valeur
]
-
Cette commande initialise les options affectant l'affichage
des tables résultat de la requête.
paramètre
décrit l'option à
initialiser. La sémantique de
valeur
en dépend.
Les options ajustables d'affichage sont :
-
format
-
Initialise le format d'affichage parmi unaligned, aligned, html, latex
ou troff-ms. Les
abréviations uniques sont autorisées. (ce qui
signifie qu'une lettre est suffisante.)
« Unaligned »
écrit toutes les colonnes d'une ligne sur une seule
ligne séparées par le séparateur de champ actif. Ceci
a pour but de créer un affichage lisible par d'autres
programmes (séparé par des tabulations, séparé par
des virgules). Le mode « Aligned » est l'affichage texte
standard, lisible par un humain, proprement formaté.
C'est aussi la valeur par défaut. Les modes
«
HTML
» et
« LaTeX »
produisent des tables destinées à être inclues dans
des documents utilisant le langage de marques
respectif. Ce ne sont pas des documents complets !
(Ce n'est pas dramatique en HTML mais en LaTeX vous devez
avoir une structure de document complet.)
-
border
-
Le second argument doit être un nombre. En général,
plus grand est ce nombre, plus les tables ont de
bordure et de ligne mais ceci dépend du format. Dans
le mode HTML, ceci
sera traduit directement avec l'attribut border=.... Avec les autres, seules
les valeurs 0 (sans bordure), 1 (lignes internes de
division) et 2 (forme de table) ont un sens.
-
expanded
(ou x)
-
Bascule entre le format standard et étendu. Lorsque
le format étendu est activé, les résultats de la
requête sont affichés sur deux colonnes avec le nom
de colonne sur la gauche et la donnée sur la droite.
Ce mode est utile dans le cas où la donnée est trop
grosse pour être contenue dans l'écran (mode
« horizontal »
habituel).
Le mode étendu est supporté par les quatre formats
d'affichage.
-
NULL
-
Le second argument est une chaîne qui est affichée
quand une colonne est NULL. La valeur par défaut est
de ne rien afficher, ce qui peut être facilement pris
pour, disons, une chaîne vide. Du coup, vous pouvez
choisir d'écrire \pset NULL
'(NULL)'.
-
fieldsep
-
Indique le séparateur de champ à utiliser dans le
mode d'affichage non aligné. De cette façon, vous
pouvez créer, par exemple, une sortie séparée par des
tabulations ou des virgules, que d'autres programmes
pourraient préférer. Pour configurer une tabulation
comme champ séparateur, saisissez \pset fieldsep '\t'. Le séparateur de
champ par défaut est '|'
(une barre verticale).
-
footer
-
Bascule l'affichage du bas de page par défaut
(x lignes).
-
numericlocale
-
Bascule l'affichage d'un caractère montrant la prise
en compte de la locale pour séparer les groupes de
chiffres à gauche de la marque des décimales. Il
active aussi une marque décimale prenant en compte la
locale.
-
recordsep
-
Indique le séparateur d'enregistrement (ligne) à
utiliser dans le mode d'affichage non aligné. La
valeur par défaut est un caractère de retour chariot.
-
tuples_only
(ou t)
-
Bascule entre les lignes seules et l'affichage
complet. Ce dernier peut afficher des informations
supplémentaires telles que les en-têtes de colonnes,
les titres et différents bas de page. Dans le mode
lignes seules, seules les données réelles de la table
sont affichées.
-
title [
texte
]
-
Initialise le titre de la table pour toutes les
tables affichées ensuite. Ceci peut être utilisé pour
ajouter des balises de description à l'affichage. Si
aucun argument n'est donné, le titre n'est pas
initialisé.
-
tableattr
(ou T) [
texte
]
-
Vous permet de spécifier tout attribut à placer à
l'intérieur de la balise table en HTML. Ceci pourrait être par
exemple cellpadding ou
bgcolor. Notez que vous ne
voulez probablement pas spécifier border car c'est pris en compte par
\pset border.
-
pager
-
Contrôle l'utilisation d'un paginateur pour le | |