установка переменных с помощью \ set in psql - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь установить переменную в консоли psql, которая содержит JSON. Я делаю это так

mydb=# \set cfg '{"base":"some url","remoteIP":"ip"}';

Затем я пытаюсь вызвать запрос и передать эту переменную

mydb=# select exec_search(:'cfg','Field');

Однако вместо выполнения, если превращается в этот

mydb'#

И когда нажимаете enter или пытаетесь добавить цитату, я не могу выполнить запрос. Я должен выйти из терминала.

mydb'#
mydb'#
mydb'# '
mydb(#

В чем проблема?

1 Ответ

1 голос
/ 22 февраля 2020

Ваша первая ошибка - точка с запятой в конце команды \set.

psql команды (команды, которые начинаются с обратного слэса sh) не заканчиваются точкой с запятой, но заканчиваются линии.

Таким образом, в результате вы получите дополнительную точку с запятой в переменной, что приведет к неверному значению JSON.

Я не могу воспроизвести вашу вторую проблему с данными из вашего вопроса. Вы получите это приглашение, если введете строку с несбалансированными одинарными кавычками.

Чтобы выйти из этого, нажмите Ctrl + C.

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