我有一个 .sql 文件,其中一些行看起来像这样:
\set buf `cat example-message.msg | base4 -w0`
SELECT * FROM run_select(:'buf');
然而,这会隐藏
example-message.msg
文件的内容,使我的文件(实际上是测试用例列表)不如我所愿易读。理想情况下,我希望能够内联example-message.msg
的内容。但它是一个大型的多行文件。我已经尝试使用here-docs:
\set buf `cat <<EOF | base64 -w0
plan { }
EOF
`
然而,这里psql抱怨一个未终止的引用字符串,并且回顾文档说它无论如何都行不通。(
但无论如何,元命令的参数不能超过行的末尾。
)接下来,我考虑了一些方法来构建要执行的字符串:
SELECT $$
plan: {}
$$ AS rawbuf \gset
\set buf `echo :rawbuf | base64 -w0`
这也不起作用,原因很明显。但我似乎无法让任何变化的东西起作用。我想在反引号中使用 psql 不进行变量替换。
还有其他我没有注意到的方法吗?