Можем ли мы взаимодействовать со сценарием PSQL? - PullRequest
4 голосов
/ 19 сентября 2010

Можем ли мы сделать что-то вроде

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

в файле сценария psql?

Система будет ждать, пока мы введем что-то, а затем отобразит строку «Конец сценария».

Ответы [ 3 ]

6 голосов
/ 19 сентября 2010

Я только что понял, что внутренняя не означает переменную, определенную в postgresql.conf.

Итак, я могу использовать \prompt

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

РЕДАКТИРОВАТЬ

Как и команда \ echo, вам не нужно добавлять ; в конце.Фактически, если вы добавите один из них при использовании \prompt, вы получите ошибку.

Вы можете показать использование значения, считанного из стандартного ввода.

\echo 'Here\'s the value read from stdin : ' :my_user
2 голосов
/ 05 января 2014

Команда COPY может, возможно, помочь взаимодействию со стандартным вводом строк,

 COPY t(a) FROM stdin;

Этот пример делает то же самое, что и

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

, с меньшим количеством путаницы с цитатами и возможностью выполнениямасштабная задача ввода.

0 голосов
/ 19 сентября 2010

Могут ли переменные замещения получить то, что вам нужно?

http://www.oracle.com/technology/support/tech/sql_plus/htdocs/sub_var.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...