Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 在psql脚本中使用变量_Xml_Postgresql_Psql - Fatal编程技术网

Xml 在psql脚本中使用变量

Xml 在psql脚本中使用变量,xml,postgresql,psql,Xml,Postgresql,Psql,我想将PostgreSQL数据库的多个表写入XML文件 以下脚本命令执行此任务(我需要混合使用大写和小写的模式名和表名): 然而,每当我想要导出另一个模式时,我必须在每一行代码中替换模式的名称(这不是什么大问题,但并不优雅) 将整个脚本的模式设置为“DbSchema”会很优雅。但是我还没有找到正确的语法。以下示例不起作用(错误消息:关系“DbSchema”不存在): 或者,我可以为模式名称设置一个变量。但以下代码也给出了一条错误消息:tabl“DbSchema”的子句条目中缺少: 我尝试了许多带

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

以下脚本命令执行此任务(我需要混合使用大写和小写的模式名和表名):

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

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

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


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

试试这样的方法

SELECT table_to_xml('"' || t.dbschema || '"."DbTable"', false, true, '')
FROM (VALUES ('DbSchema')) AS t (dbschema);
\set schema "DbSchema"

SELECT table_to_xml(:'schema' || '."DbTable"', false, true, '');
使用psql,您可以这样做

SELECT table_to_xml('"' || t.dbschema || '"."DbTable"', false, true, '')
FROM (VALUES ('DbSchema')) AS t (dbschema);
\set schema "DbSchema"

SELECT table_to_xml(:'schema' || '."DbTable"', false, true, '');
最后的解决办法是:

\set dbschema 'DbSchema'

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

psql显然不连接字符串。我正在psql脚本中使用这个SELECT语句。非常感谢!就这样!我不得不再做一个修改:““““DbTable””——在点前面再加一个引号。
\set dbschema 'DbSchema'

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