Re: delimiter à vide
fred <[email protected]> Tue, 14 Nov 2017 23:41:08 +0100
| Newsgroups | gmane.comp.db.postgresql.french |
|---|---|
| Message-ID | <[email protected]> |
Le 14/11/2017 à 14:10, Daniel Verite a écrit :
> fred wrote:
>
>> _comment faire une extraction de données avec psql et ne pas avoir de
>> délimiteur ?_
> -F avec une chaîne vide et un SELECT au lieu d'un \copy
> Ou si déjà dans psql, \pset fieldsep ''
>
> Pour l'autre question de passer une requête compliquée
> à l'option -c, il y a l'alternative de la passer en entrée
> standard via la syntaxe heredoc en shell,
> cf http://tldp.org/LDP/abs/html/here-docs.html
>
> psql [options] << 'EOF'
> ..commandes compliquées...
> EOF
>
> L'autre intérêt de cette méthode est que la requête peut
> prendre plusieurs lignes.
>
> Cordialement,
j'ai essayé ceci (mais j'ai une erreur) :
psql << 'EOF'
\copy (
select format('if (identifiant == "%s") {mail = "%s"};', identifiant, mail)
from matable
where substring(identifiant from 1 for 3) = 'dud'
order by identifiant)
to '/tmp/mail';
EOF
sed 's/dud/tot/g' /tmp/mail
donc j'ai fais (qui fonctionne):
echo " \copy (select format('if (identifiant == "%s") {mail = "%s"};',
identifiant, mail) \
from matable where substring(identifiant from 1 for 3) = 'dud' order by
identifiant) to '/tmp/mail'; " | psql
sed 's/dud/tot/g' /tmp/mail
pour finalement faire à peu de chose pareil mais en me servant de STDOUT :
echo " \copy (select format('if (identifiant == "%s") {mail = "%s"};',
identifiant, mail) \
from matable where substring(identifiant from 1 for 3) = 'dud' order by
identifiant) to STDOUT; " | psql | sed 's/dud/dug/g' /tmp/mail
Merci à tous.
PS : Je suis sur que cela va servir à d'autres.
caluga
--
Envoi via la liste pgsql-fr-generale ([email protected])