2010-09-19 4 views
4

Peut-on faire quelque chose commePeut-on interagir avec un script psql?

\echo 'Type username to show its properties'; 
SELECT * FROM mY_users WHERE username = ?; 
\echo 'End of script'; 

dans un fichier script psql?

Le système attendrait jusqu'à ce que nous entrions quelque chose, puis l'écho de la chaîne 'Fin du script'.

Répondre

6

Je viens de réaliser que interne ne signifie pas variable définie dans postgresql.conf.

Alors, je peux utiliser \prompt

\prompt 'Please, enter an username ', my_user 
SELECT * FROM mY_users WHERE username = :my_user; 
\echo 'End of script' 

EDIT

Comme commande \ echo, vous n'avez pas besoin d'ajouter un ; à la fin. En fait, si vous en ajoutez un en utilisant \prompt, vous obtenez une erreur.

Vous pouvez afficher l'utilisation de la valeur lue dans stdin.

\echo 'Here\'s the value read from stdin : ' :my_user 
1

La commande COPY peut, peut-être, aider à l'interaction avec stdin,

COPY t(a) FROM stdin; 

Cet exemple faire la même chose que

\prompt 'Please, enter a string ', mystr 
insert into t(a) values (':mystr'); 

avec moins de confusion avec des citations, et la possibilité de do une tâche d'entrée massive.

Questions connexes