From: | Guillaume Lelarge <guillaume(at)lelarge(dot)info> |
---|---|
To: | pgsql-fr-generale(at)postgresql(dot)org |
Cc: | philippe(dot)beaudoin(at)bull(dot)net |
Subject: | Re: Réf. : Re: [pgsql-fr-generale] Variable de script psql |
Date: | 2009-06-24 12:37:23 |
Message-ID: | 200906241437.23836.guillaume@lelarge.info |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
Le mercredi 24 juin 2009 à 14:10:10, philippe(dot)beaudoin(at)bull(dot)net a écrit :
> >Bonjour,
> >
> >Le mercredi 24 juin 2009 à 10:50:21, philippe(dot)beaudoin(at)bull(dot)net a écrit :
> >> [...]
> >> Il faudrait que je puisse rendre variable le pathname d'une commande :
> >> \copy <table> to <pathname>
> >> J'ai essayé d'ajouter des options -v à la commande psql pour passer des
> >> variables. Mais quand j'écris
> >> \copy <table> to :var
> >> la variable :var n'est pas substituée (et j'obtiens un beau fichier
>
> nommé
>
> >> ... :var !)
> >> Idem si la variable est définie par un \set , alors que \echo :var
>
> affiche
>
> >> bien le contenu de la variable.
> >> Je n'ai donc pas trouvé la bonne syntaxe, si elle existe...
> >
> >Remplacez le \copy par la commande SQL COPY. Et pensez à bien ajouter les
> >guillemets à la valeur de votre variable, ainsi par exemple :
> >
> >\set toto '''/home/guillaume/toto'''
>
> Merci pour les tuyaux.
> Mais la commande sql COPY pose un autre souci : il faut être superuser pour
> l'utiliser, ce qui ne va pas bien dans notre contexte.
>
> Je vais creuser l'idée de François.
> \o :mavariable -- redirige la sortie de psql vers
> \copy nom_table to stdout -- Effectue la copie de la table
> \o -- arrête la redirection
>
> Mais la sortie standard du script est déjà orientée vers un fichier au
> niveau de la commande
> psql -o ...
> En fait, on veut 2 fichiers de sortie : le log de la session psql d'un côté
> et le résultat du \copy.
> Je vais voir ce que cela peut donner.
>
Au cas où l'idée de François ne convienne pas, sachez qu'il est tout à fait
possible de devenir superuser le temps de faire le copy :
[... début du script ...]
[... plein d'instructions ...]
SET ROLE TO postgres;
COPY...
SET ROLE TO ancien_role_pas_superuser;
[... plein d'instructions ...]
[... fin du script ...]
Par contre, ancien_role_pas_superuser doit être membre du rôle postgres.
--
Guillaume.
http://www.postgresqlfr.org
http://dalibo.com
From | Date | Subject | |
---|---|---|---|
Next Message | Samuel ROZE | 2009-06-24 13:01:23 | Re: Limite de connexions dépassée pour les utilisateurs standards |
Previous Message | Guillaume Lelarge | 2009-06-24 12:32:15 | Re: Limite de connexions dépassée pour les utilisateurs standards |