Documentation PostgreSQL 7.4.29 | ||||
---|---|---|---|---|
Précédent | Arrière rapide | Avance rapide | Suivant |
psql est une interface basée sur une console 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 cette requête. Autrement, 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.
Affiche toutes les lignes à l'écran 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.
Bascule dans le mode d'affichage non aligné. (Le mode d'affichage par défaut est aligné.)
Spécifie que psql doit exécuter une chaîne de commande, commande, puis quitter. Ceci est utile dans les scripts shell.
commande doit être soit une chaîne de commande complètement analysable par le serveur (c'est-à-dire qu'il ne contient aucune des fonctionnalités spécifiques de psql), où il s'agit d'une seule commande antislash. Du coup, vous ne pouvez pas mixer les commandes SQL et les méta-commandes psql. Pour réussir ceci, vous pouvez envoyer la chaîne dans un tube vers psql comme ceci : echo "\x \\ select * from foo;" | psql.
Si la chaîne de commande contient plusieurs commandes SQL, elles sont traitées dans une seule transaction sauf si des commandes BEGIN/COMMIT explicites sont inclus 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.
Spécifie 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.
Affiche toutes les commandes qui sont envoyées au serveur. Ceci est équivalent à initialiser la variable ECHO à queries.
Affiche les requêtes réelles générées par \d et autres commandes antislash. Vous pouvez utiliser ceci si vous décidez d'inclure une fonctionnalité similaire dans vos propres programmes. Ceci est équivalent à initialiser la variable ECHO_HIDDEN à l'intérieur de psql.
Utilisez 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 équivalent dans bien des cas à 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 est (en théorie) garantie pour ramener exactement le même affichage que vous avez eu en saisissant tout manuellement.
Utilisez séparateur comme champ séparateur. Ceci est équivalent à \pset fieldsep ou \f.
Spécifie le nom de l'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.
Active l'affichage en tableau HTML. Ceci est équivalent à \pset format html ou à la commande \H.
Liste toutes les bases de données disponibles puis quitter. Les autres option non relatives à la connexion sont ignorées. Ceci est similaire à la commande interne \list.
N'utilise pas readline pour l'édition de ligne et n'utilise pas l'historique. Ceci est utile quand on veut désactiver la gestion de la tabulation pour l'action copie/colle.
Place tous les affichages de fichiers dans le fichier nomfichier. Ceci est équivalent à la commande \o.
Spécifie 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.
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.
Spécifie que psql devra 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'arrivera. 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.
Utilisez séparateur comme séparateur d'enregistrement. Ceci est équivalent à la commande \pset recordsep.
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 ceci pour déboguer des scripts.
S'exécute en mode simple ligne où une nouvelle ligne termine une commande SQL, comme un point-virgule.
Note : Ce mode est fourni pour ceux qui insistent 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 ne sera pas toujours clair pour l'utilisateur non expérimenté.
Désactive l'affichage des noms de colonnes et le pied de page contenant le nombre de résultats, etc. C'est totalement équivalent à la méta-commande \t.
Permet de spécifier les options à placer à l'intérieur d'une balise
table
en HTML. Voir
\pset pour plus de détails.
Fait que psql demande 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 et demander un mot de passe parce que le serveur l'exige sont deux choses tout à fait différentes.) Vous êtes encouragé à regarder les options -U et -W à la place.
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.)
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 pourraient être écrasées plus tard.
Affiche la version de psql.
Demande que psql affiche une demande de mot de passe avant de se connecter à une base de données. Ceci restera initialisé pour la session entière même si vous changez la base de données connectée avec la commande \connect.
Dans la version actuelle, psql lance systématiquement une demande de mot de passe quand le serveur requiert une authentification par mot de passe. Parce que c'est actuellement basé sur un hack, la reconnaissance automatique pourrait mystérieusement échouée, ce qui explique cette option pour forcer une demande de mot de passe. Si aucune demande n'est affichée et que le serveur requiert une authentification par mot de passe, la tentative de connexion échouera.
Active le mode de formatage de table étendue. Ceci est équivalent à la commande \x.
Ne lit pas le fichier de démarrage ~/.psqlrc.
Affiche de l'aide sur les arguments en ligne de commande de psql.
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 détériorée ou a été annulée, 3 si une erreur est survenue dans un script et la variable ON_ERROR_STOP a été initialisée.
psql est une application client PostgreSQL standard. Pour se connecter à une base de données, vous avez besoin de 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, nommément respectivement -d, -h, -p et -U. Si un argument est trouvé ne correspondant pas à une option, il sera 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 aussi donnée). 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 connectera via un socket de domaine Unix à un serveur sur l'hôte local. 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 à une base de données avec n'importe quel nom d'utilisateur. Votre administrateur de bases de données devrait vous avoir informé de vos droits d'accès. Pour vous épargner des saisies, vous pouvez initialiser les variables d'environnement PGDATABASE, PGHOST, PGPORT et PGUSER par des valeurs appropriées.
Si la connexion ne peut pas se faire quelqu'en soit la raison (c'est-à-dire droits non suffisants, serveur arrêté sur l'hôte cible, etc.), psql renverra une erreur et quittera.
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 testdb Welcome to psql 7.4.29, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit testdb=>
À l'invite l'utilisateur peut saisir les 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 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.
Tout ce que vous saisissez dans psql qui commence par un antislash non échappé est une méta-commande psql qui est traité par psql lui-même. Ces commandes sont ce qui rend psql intéressant 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 chacun 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, précédez-le d'un antislash. Tout ce qui est contenu entre des guillemets simples est plus sujet à des substitutions style C pour \n (nouvelle ligne), \t (tabulation), \chiffres, \0chiffres et \0xchiffres (le caractère avec le code donné en décimal, octal ou hexadécimal).
Si un argument sans guillemet 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 (avec toute nouvelle ligne en fin supprimée) 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és en minuscule alors que les guillemets doubles (") protègent les lettres de la conversion de casse et autorisent l'incorporation d'espace blanc dans l'identifiant. À l'intérieur des guillemets doubles, les guillemets doubles en pair réduisent à un seul guillemet double dans le nom résultant. Par exemple, FOO"BAR"BAZ est interprété comme fooBARbaz et "A weird"" name" devient A weird" name.
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, s'ils 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 peut pas continuer après la fin de la ligne.
Les meta-commandes suivantes sont définies :
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 générale.
Modifie le répertoire courant par répertoire. Sans argument, modifie par le répertoire personnel de l'utilisateur.
Astuce : Pour afficher votre répertoire courant, utilisez \! pwd.
Initialise le titre de toute table en cours d'affichage avec le résultat d'une requête ou pour supprimer un tel titre. Cette commande est équivalent à \pset title titte. (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.)
Établie une connexion à une nouvelle base de données et/ou sous un nom d'utilisateur. La connexion précédente est fermée. Si nomdb est -, le nom de la base de données actuelle est supposé.
Si nomutilisateur est omis, le nom de l'utilisateur courant est supposé.
Comme règle spéciale, \connect sans autre argument se connectera à la base de données par défaut en tant que l' utilisateur par défaut (comme ce que vous auriez obtenu en lançant psql sans arguments).
Si la tentative de connexion échoue (mauvais nom utilisateur, accès interdit, etc.), la connexion précédente sera conservée si et seulement si psql est en mode interactif. Lorsqu'il exécute un script non interactif, le traitement s'arrêtera immédiatement avec une erreur. Cette distinction a été choisie pour empêcher les problèmes de typographie et un mécanisme sûr pour que les scripts n'agissent pas sur la mauvaise base de données.
Réalise un client (interface) pour copy. 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. (Voir sa description pour plus de détails.) 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'échappements antislash ne s'appliquent pas.
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, l'autre technique est préférable.
Note : Notez la différence dans l'interprétation de stdin et stdout entre les copies client et serveur : dans une copie client, ils se réfèrent toujours aux flux d'entrée et de sortie de psql. Sur un serveur, stdin s'applique à chaque fois que COPY est nécessaire (par exemple, un script s'exécute avec l'option -f) et stdout se réfère au flux de sortie du requête (voir la méta-commande \o ci-dessous).
Affiche le copyright et les termes de distribution de PostgreSQL.
Pour chaque relation (table, vue, index ou séquence) correspondant au modèle, affiche toutes les colonnes, leur types 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. (<< Correspondre au modèle >> est défini ci-dessous.)
Le forme de la commande \d+ est identique mais tout commentaire associé avec les colonnes de la table est aussi affiché.
Note : Si \d est utilisé sans argument modèle, c'est équivalent à \dtvs qui affichera une liste de toutes les tables, vues et séquences. Ceci est une fonctionnalité de simplicité.
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.
Liste toutes les conversions disponibles entre les codages des ensembles de caractères. Si modèle est spécifié, seules les conversions dont le nom correspond au modèle sont listées.
Liste toutes les conversions de type disponibles.
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 COMMENT SQL.
Liste tous les domaines disponibles. Si modèle est spécifié, seuls les domaines correspondant sont affichés.
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, incluant le langage et la description, sont proposées.
Note : 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.
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.
Ceci est un alias pour \lo_list, qui affiche une liste des objets larges.
Liste tous les schémas disponibles. Si modèle (une expression rationnelle) est spécifiée, seuls les schémas dont le nom correspond au modèle sont listés.
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.
Produit une liste de toutes les tables disponibles avec leur droits d'accès associés. Si modèle est spécifié, seules les tables 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. Voir GRANT pour plus d'informations.
Liste tous les types de données ou seulement ceux dont le nom correspond à modèle. La forme de la commande \dT+ affiche des informations supplémentaires.
Liste tous les utilisateurs de la base de données ou seulement ceux dont le nom correspond au modèle.
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 attendra 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é, /bin/vi est lancé.
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.
Initialise le codage de l'ensemble de caractère du client. Sans argument, cette command affiche le codage actuel.
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.
Envoie le tampon de requête en entrée vers le serveur et sauvegarde la sortie en option dans nomfichier ou envoie dans un tube la sortie vers un autre shell Unix pour exécuter commande. Un simple \g est virtuellement équivalent à un point-virgule. Un \g avec argument est une alternative en << un coup >> à la commande \o.
Donne la syntaxe sur la commande SQL spécifiée. Si commande n'est pas spécifiée, alors psql listera toutes les commandes pour lesquelles une aide en ligne est disponible. Si commande est une astérisque (*), alors l'aide en ligne de toutes les commandes SQL est affichée.
Note : Pour simplifier la saisie, les commandes qui consiste en plusieurs mots n'ont pas besoin d'être entre guillemets. Du coup, il est correct de saisir \help alter table.
Active le format d'affichage HTML des requêtes. Si le format HTML est déjà activé, il est basculé au format d'affichage par défaut. Cette commande est pour la compatibilité mais voir \pset pour configurer les autres options d'affichage.
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.
Liste les noms, propriétaires et codages des ensembles de caractères dans le serveur. Ajoutez un + au nom de la commande pour voir aussi toute description pour les bases de données.
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.
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 du système de fichiers.
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.
Supprime l'objet large d'OID loid à partir de la base de données.
Astuce : Utilisez \lo_list pour trouver l'OID d'un objet large.
Sauvegarde les résultats de requête future dans le fichier nomfichier ou envoie via un tube les résultats futurs dans un shell Unix séparé pour exécuter command. Si aucun argument n'est spécifié, l'affichage de la requête sera réinitialisé avec 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 la sortie texte entre les résultats de requête, utilisez \qecho.
Affiche le tampon de la requête actuelle sur la sortie standard.
Cette commande initialise les options affectant la sortie 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 :
Initialise le format d'affichage parmi unaligned, aligned, html ou latex. 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 l'affichage qui pourrait avoir pour but d'être 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, joliment formaté. C'est aussi la valeur par défaut. Les modes << HTML >> et << LaTeX >> placent les tables qui ont pour but d'être inclus dans des documents utilisant le langage de marques respectif. Ce ne sont pas des documents complets ! (Ceci n'est pas si dramatique en HTML mais en LaTeX vous devez avoir une structure de document complet.)
Le second argument doit être un nombre. En général, plus haut est ce nombre, plus les tables auront 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.
Bascule entre le format standard et étendu. Lorsque le format étendu est activé, tout l'affichage a deux colonnes avec le nom de colonne sur la gauche et la donnée sur la droite. Ce mode est utile si les données ne tiennent pas sur l'écran dans le mode << horizontal >>.
Le mode étendu est supporté par les quatre formats d'affichage.
Le second argument est une chaîne qui sera affichée quand une colonne est NULL. La valeur par défaut est de n'afficher rien, ce qui peut être facilement pris pour, disons, une chaîne vide. Du coup, vous pouvez choisir d'écrire \pset NULL '(NULL)'.
Spécifie 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).
Bascule l'affichage du bas de page par défaut (x lignes).
Spécifie 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.
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.
Initialise le titre de la table pour toutes les tables affichées en suite. Ceci peut être utilisé pour donner vos balises de description d'affichage. Si aucun argument n'est donné, le titre n'est pas initialisé.
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 ici car c'est déjà prise en compte
par \pset border.
Contrôle l'utilisation d'un paginateur pour les requêtes et les affichages de l'aide de psql. Si la variable d'environnement PAGER est configurée, la sortie est envoyée via un tube dans ce programme spécifié. Sinon, une valeur par défaut dépendant de la plateforme (comme more) est utilisée.
Lorsque le paginateur est spécifié, il n'est pas utilisé. Quand le paginateur est activé, il est utilisé seulement si approprié, c'est-à-dire que l'affichage se fait sur un terminal et qu'il ne tient pas sur l'écran. (psql ne fait pas un boulot parfait pour savoir quand utiliser le paginateur.) \pset pager active et désactive le paginateur. Ce dernier peut aussi être configurer à always, ce qui fait qu'il est utilisé en permanence.
Des illustrations sur la façon d'utiliser ces différents formats sont disponibles dans la section Exemples.
Astuce : Il existe plusieurs raccourcis de commandes pour \pset. Voir \a, \C, \H, \t, \T et \x.
Note : C'est une erreur d'appeler \pset sans arguments. Dans le futur, cet appel pourrait afficher le statut actuel de toutes les options d'affichage.
Quitte le programme psql.
Cette commande est identique à \echo sauf que tous les affichages seront écrits dans le canal d'affichage des requêtes, configuré par \o.
Réinitialise (efface) le tampon de requêtes.
Affiche ou sauvegarde l'historique des lignes de commande dans nomfichier. Si nomfichier est omit, l'historique est écrit sur la sortie standard. Cette option est seulement disponible si psql est configuré pour utiliser la bibliothèque d'historique GNU.
Note : Dans la version actuelle, il n'est plus nécessaire de sauvegarder l'historique des commandes car c'est fait automatiquement à la fin du programme. L'historique est aussi chargé automatiquement chaque fois que psql est lancé.
Initialise la variable interne nom à valeur ou, si plus d'une valeur est donnée, à la concaténation de toutes les valeurs. Si aucun second argument n'est donné, la variable est simplement initialisée sans valeur. Pour désinitialiser une variable, utilisez la commande \unset.
Les noms de variables valides peuvent contenir des caractères, chiffres et tirets bas. Voir la section Variables ci-dessous pour les détails.
Bien que vous soyez bienvenue pour configurer toute variable que vous souhaitez, psql traite plusieurs variables de façon spéciale. Elles sont documentées dans la section sur les variables.
Note : Cette commande est totalement séparée de la commande SQL SET.
Bascule l'affichage des en-têtes de nom de colonne en sortie et celle du bas de page indiquant le nombre de lignes. Cette commande est équivalente à \pset tuples_only et est fournie pour y faciliter l'accès.
Vous permet de spécifier les attributs à placer à l'intérieur de la
balise table
dans le mode d'affichage en tableau
HTML. Cette commande est équivalente à \pset
tableattr options_table.
Bascule un affichage du temps pris par chaque instruction SQL en millisecondes.
Place le tampon de requête en cours dans le fichier nomfichier ou l'envoie via un tube à la commande Unix commande.
Bascule le mode étendu de formatage en table. C'est équivalent à \pset expanded.
Produit une liste de toutes les tables disponibles avec leur droit d'accès associé. Si un modèle est spécifié, seules les tables 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 . Voir GRANT pour plus d'informations.
Ceci est un alias pour \dp (<< affichage des droits >>).
Échappe vers un shell Unix séparé ou exécute la commande Unix commande. Les arguments ne sont pas plus interprétées, le shell les verra ainsi.
Affiche l'aide sur les commandes antislash.
Les différentes commandes \d acceptent un paramètre modèle pour spécifier le(s) nom(s) d'objet à afficher. * signifie << toute séquence de caractères >> et ? signifie << tout caractère simple >>. (Cette notation est comparable aux modèles du shell pour les noms de fichier Unix.) Les utilisateurs avancés peuvent aussi utiliser des notations d'expressions rationnelles telles que les classes de caractères, par exemple [0-9] pour correspondre à << tout chiffre >>. Pour faire que tous ces caractères de correspondance de modèles soient interprétés de façon littérale, englobez-les avec des guillemets doubles.
Un modèle contenant un point (sans guillemet) est interprété comme un modèle de nom de schéma suivi par un modèle de nom d'objet. Par exemple, \dt foo*.bar* affiche toutes les tables dont le nom du schéma commence avec foo et dont le nom de table commence avec bar. Si aucun point n'apparaît, alors le modèle correspond seulement aux objets visibles dans le chemin actuel de recherche de schéma.
À chaque fois que le paramètre modèle est complètement omis, les commandes \d affichent tous les objets visibles dans le chemin de recherche actuel du schéma. Pour voir tous les objets dans la base de données, utilisez le modèle *.*.
psql fournit des fonctionnalités de substitution de variable similaire aux shells de commandes Unix. Les variables sont simplement des paires nom/valeur où la valeur peut être toute chaîne, quel que soit sa longueur. Pour initialiser des variables, utilisez la méta-commande psql \set :
testdb=> \set foo bar
initialise la variable foo avec la valeur bar. Pour récupérer le contenu de la variable, précédez le nom avec un caractère deux-points et utilisez-la comme argument de toute commande slash :
testdb=> \echo :foo bar
Note : Les arguments de \set sont sujet aux même règles de substitution que les autres commandes. Du coup, vous pouvez construire des références intéressantes comme \set :foo 'quelquechose' et obtenir des << liens doux >> ou des << variables de variables >> comme, respectivement, Perl ou PHP. Malheureusement (ou heureusement ?), il n'existe pas de moyen de faire quelque chose d'utile avec ces constructions. D'un autre côté, \set bar :foo est un moyen parfaitement valide de copier une variable.
Si vous appelez \set sans second argument, la variable est initialisée avec une chaîne vide. Pour désinitialiser (ou supprimer) une variable, utilisez la commande \unset.
Les noms de variables internes de psql peuvent consister de lettres, nombres et tirets bas dans n'importe quel ordre et autant de fois que vous le voulez. Un certain nombre de ces variables sont traitées spécialement par psql. Elles indiquent certaines options qui peuvent changer au moment de l'exécution en modifiant la valeur de la variable ou représentent un certain état de l'application. Bien que vous pouvez utiliser ces variables dans n'importe quel but, ceci n'est pas recommandé car le comportement du programme pourrait grossier de façon étrange très rapidement. Par convention, toutes les variables traitées spécialement sont uniquement composées de lettres majuscules (et peut-être aussi de chiffres et de tirets bas). Pour s'assurer de la compatibilité maximum dans le futur, évitez l'utilisation de tels noms de variables pour vos propres besoins. Une liste de toutes les variables traitées spécialement suit.
Si actif (on, valeur par défaut), chaque commande SQL est automatiquement validée si elle se termine avec succès. Pour suspendre la validation dans ce mode, vous devez saisir une commande SQL BEGIN ou START TRANSACTION. Lorsqu'elle est désactivée (off) ou non initialisée, les commandes SQL ne sont plus validées tant que vous ne lancez pas explicitement COMMIT ou END. Le mode sans autocommit fonctionne en lançant implicitement un BEGIN pour vous, juste avant toute commande qui n'est pas déjà dans un bloc de transaction et qui n'est pas elle-même un BEGIN ou une autre commande de contrôle de transaction.
Note : Dans le mode sans autocommit, vous devez annuler explicitement toute transaction échouée en saisissant ABORT ou ROLLBACK. Gardez aussi en tête que si vous sortez d'une session sans validation, votre travail sera perdu.
Note : Le mode auto-commit est le comportement traditionnel de PostgreSQL alors que le mode sans autocommit est plus proche des spécifications SQL. Si vous préférez sans autocommit, vous pourriez souhaiter le configurer dans votre fichier .psqlrc.
Le nom de la base de données où vous êtes actuellement connecté. Ceci est configuré à chaque fois que vous vous connectez à une base de données (ainsi qu'au lancement du programme) mais peut être désinitialiser.
S'il est initialisé à all, toutes les lignes saisies ou provenant d'un script sont écrites sur la sortie standard avant d'être analysées ou exécutées. Pour sélectionner ce comportement sur le lancement de programme, utilisez l'option -a. Si configuré à queries, psql affiche simplement toutes les requêtes au moment de leur envoi au serveur. L'option pour ceci est -e.
Quand cette variable est initialisée et qu'une commande antislash est envoyée à la base de données, la requête est d'abord affichée. De cette façon, vous pouvez étudier les internes de PostgreSQL et fournir des fonctionnalités similaires dans vos propres programmes. (Pour sélectionner ce comportement au lancement du programme, utilisez l'option -E.) Si vous configurez la variable avec la valeur noexec, les requêtes sont juste affichées mais ne sont plus réellement envoyées au serveur et exécutées.
Le codage en cours de l'ensemble de caractères du client.
Si cette variable est configurée à ignorespace, les lignes commençant avec un espace n'entrent pas dans la liste de l'historique. Si elle est initialisée avec la valeur ignoredups, les lignes correspondant aux précédentes lignes de l'historique n'entrent pas non plus. Une valeur de ignoreboth combine les deux options. Si elle n'est pas initialisée ou si elle est configurée avec une autre valeur que celles-ci, toutes les lignes lues dans le mode interactif sont sauvegardées dans la liste de l'historique.
Note : Cette fonctionnalité a été honteusement plagiée sur Bash.
Le nombre de commandes à stocker dans l'historique des commandes. La valeur par défaut est 500.
Note : Cette fonctionnalité a été honteusement plagiée sur Bash.
L'hôte du serveur de la base de données où vous êtes actuellement connecté. Ceci est configuré à chaque fois que vous vous connectez à une base de données (ainsi qu'au lancement du programme) mais peut être désinitialisé.
Si non initialisé, envoyer un caractère EOF (habituellement Ctrl+D) dans une session interactive de psql terminera l'application. Si elle est configurée avec une valeur numérique, ce nombre de caractères EOF sera ignoré avant la fin de l'application. Si la variable est configurée mais n'a pas de valeur numérique, la valeur par défaut est de 10.
Note : Cette fonctionnalité a été honteusement plagiée sur Bash.
La valeur du dernier OID affecté, renvoyé à partir d'une commande INSERT ou lo_insert. La validité de cette variable est seulement garantie jusqu'après l'affichage du résultat de la prochaine commande SQL.
Par défaut, si les scripts non interactifs rencontrent une erreur, comme une commande SQL mal formée ou une méta-commande interne. Ceci a été le comportement traditionnel de psql mais il est quelque fois indésirable. Si cette variable est configurée, le traitement du script s'arrête immédiatement. Si le script a été appelé à partir d'un autre script, il se terminera de la même façon. Si le script le plus externe n'a pas été appelé à partir d'une session interactive de psql mais plutôt en utilisant l'option -f, psql renverra le code erreur 3 pour distinguer ce cas des conditions d'erreurs fatales (code d'erreur 1).
Le port du serveur de la base de données sur laquelle vous êtes actuellement connecté. Ceci est configuré à chaque fois que vous vous connectez à une base de données (ainsi qu'au lancement du programme) mais peut être désinitialisée.
Ils spécifient à quoi devrait ressembler l'invite psql. Voir Invite ci-dessous.
Cette variable est équivalente à l'option -q en ligne de commande. Il n'est probablement pas aussi utile dans le mode interactif.
Cette variable est équivalente à l'option -S en ligne de commande.
Cette variable est équivalente à l'option -s en ligne de commande.
L'utilisateur de la base de données où vous êtes actuellement connecté. Ceci est configuré à chaque fois que vous vous connectez à une base de données (ainsi qu'au lancement du programme) mais peut être désinitialisé.
Cette variable peut être configurée avec les valeurs default, verbose ou terse pour contrôler la verbosité des rapports d'erreurs.
Un fonctionnalité utile supplémentaire des variables psql est que vous pouvez les substituer (<< interpoler >>) dans les instructions SQL standards. La syntaxe pour ceci est encore l'ajout d'un caractère deux-points (:) avant le nom de la variable.
testdb=> \set foo 'ma_table' testdb=> SELECT * FROM :foo;
enverra alors la requête pour la table ma_table. La valeur de la variable est copiée littéralement, donc il peut même contenir des guillemets non terminés ou des commandes antislash. Vous devez vous assurer que cela a un sens. L'interpolation de variable ne sera pas réalisée dans des entités SQL SQL entre guillemets.
Une application populaire de cette fonctionnalité est de référer au dernier OID inséré dans les instructions suivantes pour construire un scénario de clé étrangère. Une autre utilisation possible de ce mécanisme est de copier le contenu d'un fichier dans une colonne d'une table. Tout d'abord, chargez le fichier dans une variable puis procédez ainsi.
testdb=> \set contenu '\'' `cat mon_fichier.txt` '\'' testdb=> INSERT INTO ma_table VALUES (:contenu);
Un problème possible avec cette approche est que mon_fichier.txt pourrait contenir des guillemets simples. Ils ont besoin d'être échappés pour ne pas provoquer d'erreurs de syntaxe quand la deuxième ligne est traitée. Ceci peut se faire avec le programme sed :
testdb=> \set contenu '\'' `sed -e "s/'/\\\\\\'/g" < mon_fichier.txt` '\''
Observez le nombre correct d'antislashs (6) ! Cela fonctionne de cette façon : après l'analyse de la ligne par psql, il passe sed -e "s/'/\\\'/g" < mon_fichier.txt au shell. Le shell fera son travail à l'intérieur des doubles guillemets et exécute sed avec les arguments -e et s/'/\\'/g. Quand sed analyse ceci, il remplacera les deux antislashs avec un seul et fera ensuite la substitution. Peut-être qu'à un moment vous pensiez qu'il était génial que toutes les commandes Unix utilisent le même caractère d'échappement. Et ceci ignore le fait que vous pourriez avoir à échapper aussi tous les antislashs parce que les constantes de texte SQL sont aussi sujet à certaines interprétations. Dans ce cas, vous seriez mieux de préparer le fichier de façon externe.
Comme les caractères deux-points pourraient apparaître légalement dans les commandes SQL, la règle suivante s'applique : la séquence de caractère << :nom >> n'est pas changée sauf si << nom >> est le nom d'une variable réellement initialisée. Dans tous les cas, vous pouvez échapper un deux-points avec un antislash pour le protéger d'une substitution. (La syntaxe deux-points pour les variables fait partie du standard SQL pour les langages de requêtes embarqués, tels que ECPG. La syntaxe deux-points pour les morceaux de tableau et les conversions de types sont des extensions PostgreSQL, d'où le conflit.)
Les invites psql peuvent être personnalisées suivant vos préférences. Les trois variables PROMPT1, PROMPT2 et PROMPT3 contiennent des chaînes et des séquences d'échappement spéciales décrivant l'apparence de l'invite. L'invite 1 est l'invite normale qui est lancée quand psql réclame une nouvelle commande. L'invite 2 est lancée lorsqu'une saisie supplémentaire est attendue lors de la saisie de la commande parce que la commande n'a pas été terminée avec un point-virgule ou parce qu'un guillemet n'a pas été fermé. L'invite 3 est lancée lorsque vous exécutez une commande SQL COPY et que vous devez saisir les valeurs des lignes sur le terminal.
La valeur de la variable prompt sélectionnée est affichée littéralement sauf si un signe pourcentage (%) est rencontré. Suivant le prochain caractère, certains autres textes sont substitués. Les substitutions définies sont :
Le nom complet de l'hôte (avec le nom du domaine) du serveur de la base de données ou [local] si la connexion est établie via un socket de domaine Unix ou [local:/répertoire/nom], si le socket de domaine Unix n'est pas dans l'emplacement défini au moment de la compilation.
Le nom de l'hôte du serveur de la base de données, tronquée au premier point ou [local] si la connexion se fait via un socket de domaine Unix.
Le numéro de port sur lequel le serveur de la base de données écoute.
Le nom d'utilisateur de la session. (L'expansion de cette valeur pourrait changer pendant une session après une commande SET SESSION AUTHORIZATION.)
Le nom de la base de données courante.
Comme %/ mais l'affichage est un ~ (tilde) si la base de données est votre base de données par défaut.
Si l'utilisateur de la session est un superutilisateur, alors un # sinon un >. (L'expansion de cette valeur pourrait changer durant une session à la base de données suite à la commande SET SESSION AUTHORIZATION.)
À l'invite 1 normalement = mais ^ si en mode simple ligne et ! si la session est déconnectée de la base de données (ce qui peut arriver si \connect échoue). À l'invite 2, la séquence est remplacée par -, *, un simple guillemet ou un double, suivant si psql attend une saisie supplémentaire parce que la commande n'est pas terminée, parce que vous êtes à l'intérieur d'un commentaire /* ... */, ou parce que vous n'avez pas terminé un guillemet. À l'invite 3, la séquence ne produit rien.
État de la Transaction : une chaîne vide lorsque vous n'êtes pas dans un bloc de transaction ou * si vous vous y trouvez, ou ! si vous êtes dans une transaction échouée, ou enfin ? lorsque l'état de la transaction est indéterminé (par exemple à cause d'une rupture de la connexion).
Le caractère avec ce code numérique est substitué. Si chiffres commence avec 0x, le reste des caractères est interprété en hexadécimal ; sinon si le premier caractère est 0, les chiffres sont interprétés comme de l'octal enfin, en dernier cas, les chiffres sont lus en tant que nombre décimal.
La valeur de la variable nom psql. Voir la section Variables pour les détails.
la sortie de la commande, similaire à la substitution par << guillemet inverse >>.
Pour insérer un pourcentage dans votre invite, écrivez %%. Les invites par défaut sont '%/%R%# ' pour les invites 1 et 2 et '>> ' pour l'invite 3.
Note : Cette fonctionnalité a été honteusement plagiée sur tcsh.
psql supporte la bibliothèque Readline pour une édition et une recherche simplifiée et conviviale de la ligne. L'historique de la commande est stocké dans un fichier nommé .psql_history, placé dans votre répertoire personnel, et est rechargé au lancement de psql. La complétion par tabulation est aussi supportée bien que la logique de complétion n'a pas la prétention d'être un analyseur SQL. Si pour quelques raisons que ce soit, vous n'aimez pas la complétion par tabulation, vous pouvez la désactiver en plaçant ceci dans un fichier nommé .inputrc de votre répertoire personnel :
$if psql set disable-completion on $endif
(Ceci n'est pas une fonctionnalité psql mais Readline. Lisez sa documentation pour plus de détails.)
Répertoire pour les fichiers d'initialisation (.psqlrc) et fichier de l'historique des commandes (.psql_history).
Si les résultats d'une requête ne tiennent pas sur l'écran, ils sont envoyés via un tube sur cette commande. Les valeurs typiques sont more our less. La valeur par défaut dépend de la plateforme. L'utilisation du paginateur peut être désactivée en utilisant la commande \pset.
Base de données où se connecter par défaut
Paramètres de connexion par défaut
Éditeur utilisé par la commande \e. Les variables sont examinées dans l'ordre donné ; la première initialisée est celle qui sera utilisée.
Commande exécutée par la commande \!.
Répertoire pour stocker des fichiers temporaires. La valeur par défaut est /tmp.
Avant de se lancer, psql tente de lire et exécuter les commandes provenant du fichier $HOME/.psqlrc. Il pourrait être utilisé pour configurer le client ou le serveur à votre goût (en utilisant les commandes \set et SET).
L'historique de la ligne de commande est stocké dans le fichier $HOME/.psql_history.
Dans une vie précédente, psql permettait au premier argument d'une commande antislash à une seule lettre de commencer directement après la commande sans intervenir sur les espaces blancs. Pour la compatibilité, ceci est toujours supporté jusqu'à un certain point mais nous n'allons pas expliquer les détails ici car son utilisation n'est pas encouragée. Si vous obtenez des messages étranges, gardez ceci en tête. Par exemple
testdb=> \foo Field separator is "oo".
ce qui n'est peut-être pas ce que nous souhaitons.
psql travaille seulement correctement avec des serveurs de la même version. Cela ne signifie pas que les autres combinaisons échoueront immédiatement mais des problèmes subtiles et moins subtiles pourraient survenir. Les commandes antislash ont particulièrement plus de chance d'échouer si le serveur est d'une version différente.
Le premier exemple affiche comment envoyer une commande sur plusieurs lignes d'entrée. Notez le changement de l'invite :
testdb=> CREATE TABLE ma_table ( testdb(> premier integer not NULL default 0, testdb(> second text testdb-> ); CREATE TABLE
Maintenant, regardons de nouveau la définition de la table :
testdb=> \d ma_table Table "ma_table" Attribute | Type | Modifier -----------+---------+-------------------- premier | integer | not NULL default 0 second | text |
Maintenant, changeons l'invite par quelque chose de plus intéressant :
testdb=> \set PROMPT1 '%n@%m %~%R%# ' peter@localhost testdb=>
Supposons que nous avons rempli la table de données et que nous voulons les regarder :
peter@localhost testdb=> SELECT * FROM ma_table; premier | second ---------+-------- 1 | one 2 | two 3 | three 4 | four (4 rows)
Vous pouvez faire apparaître cette table de façon différente en utilisant la commande \pset :
peter@localhost testdb=> \pset border 2 Border style is 2. peter@localhost testdb=> SELECT * FROM ma_table; +---------+--------+ | premier | second | +---------+--------+ | 1 | one | | 2 | two | | 3 | three | | 4 | four | +---------+--------+ (4 rows) peter@localhost testdb=> \pset border 0 Border style is 0. peter@localhost testdb=> SELECT * FROM ma_table; premier second ------- ------ 1 one 2 two 3 three 4 four (4 rows) peter@localhost testdb=> \pset border 1 Border style is 1. peter@localhost testdb=> \pset format unaligned Output format is unaligned. peter@localhost testdb=> \pset fieldsep "," Field separator is ",". peter@localhost testdb=> \pset tuples_only Showing only tuples. peter@localhost testdb=> SELECT second, first FROM ma_table; one,1 two,2 three,3 four,4
Autrement, utilisez les commandes courtes :
peter@localhost testdb=> \a \t \x Output format is aligned. Tuples only is off. Expanded display is on. peter@localhost testdb=> SELECT * FROM ma_table; -[ RECORD 1 ]- first | 1 second | one -[ RECORD 2 ]- first | 2 second | two -[ RECORD 3 ]- first | 3 second | three -[ RECORD 4 ]- first | 4 second | four
Précédent | Sommaire | Suivant |
pgtksh | Niveau supérieur | vacuumdb |