在 psql 脚本中使用变量

克里斯

我想将一个 PostgreSQL 数据库的多个表写入一个 XML 文件。

以下脚本命令可以完成这项工作(我需要混合大写和小写的模式和表名):

SELECT table_to_xml('"DbSchema"."DbTable"', false, true, '');

但是,每当我想导出另一个模式时,我都必须在每一行代码中替换模式的名称(这没什么大不了的,但并不优雅)。

将整个脚本的架构设置为“DbSchema”会很优雅。但我一直无法找到正确的语法。以下示例不起作用(错误消息:关系“DbSchema”不存在):

\set schema "DbSchema"

SELECT table_to_xml('"DbTable"', false, true, '');

或者,我可以为架构名称设置一个变量。但以下代码也给出了一条错误消息:缺少表“DbSchema”的 FROM 子句条目:

\set dbschema "DbSchema"

SELECT table_to_xml(:dbschema."DbTable", false, true, '');

我尝试了许多带引号和不带引号的变体,但我没有找到正确的语法。我究竟做错了什么?

克里斯

最终的解决方案是:

\set dbschema 'DbSchema'

SELECT table_to_xml('"' || :'dbschema' || '"."DbTable"', false, true, '');

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章