postgresql - 在 psql 中使用 \set 设置变量
问题描述
我正在尝试在psql
包含 JSON 的控制台中设置变量。我这样做
mydb=# \set cfg '{"base":"some url","remoteIP":"ip"}';
然后我试图调用查询并传递这个变量
mydb=# select exec_search(:'cfg','Field');
但是,如果变成这个而不是执行
mydb'#
当按下enter
或尝试添加报价时,我无法执行查询。我必须退出终端。
mydb'#
mydb'#
mydb'# '
mydb(#
问题是什么?
解决方案
\set
您的第一个错误是命令末尾的分号。
psql
命令(以反斜杠开头的命令)不以分号结束,而是以行尾结束。
因此,您最终会在变量中添加一个额外的分号,这将导致 JSON 无效。
我无法用您问题中的数据重现您的第二个问题。如果您输入带有不平衡单引号的行,您会收到此提示。
要摆脱这种情况,请按Ctrl+ C。
推荐阅读
- android - 片段测试错误:android.view.InflateException: Binary XML file line #16: Binary XML file line #16: Error inflating class
- pull-request - 代码审查的主要考虑因素是什么?
- javascript - 当组件获得焦点或在angularjs中单击时,如何将类添加到容器中?
- json - 使用 jq 根据标签过滤 AWS 资源
- javascript - 有没有办法单独设置使用 .map() 函数呈现的组件的样式?
- python - 如何在 Python 中使用变量作为另一个函数的名称
- android - 单击edittext时如何取消隐藏系统栏
- java - 嵌套文档列表(大小未知)中的 MongoDB 过滤器
- angular - Angular 8 HostListener'window:unload'如何在卸载之前进行API调用
- asp.net-core - 使用 F# 和 asp.net 核心注册控制器