【发布时间】:2015-07-09 22:24:55
【问题描述】:
使用 psql 客户端版本 8.4.20,我创建了这个选择命令,它会生成一堆其他选择命令:
mydatabase=# select concat('select count(*) from ', table_schema, '.', table_name, ';') from information_schema.tables where table_name like '%stockindex_alias%';
select count(*) from de_de.merged_stockindex_alias_de_de;
select count(*) from en_us.merged_stockindex_alias_en_us;
select count(*) from es_la.merged_stockindex_alias_es_la;
select count(*) from fr_fr.merged_stockindex_alias_fr_fr;
select count(*) from nl_nl.merged_stockindex_alias_nl_nl;
select count(*) from pt_br.merged_stockindex_alias_pt_br;
select count(*) from zh_hk.merged_stockindex_alias_zh_hk;
我知道我可以使用 \g 将这七个语句存储到一个文件中,然后使用 \i 执行该文件。
如何在没有中间文件的情况下在单个命令中执行查询结果(这七个语句)?我试过\set,EXECUTE,在网上搜索过,但都找不到。
编辑:之前的 select 语句错误地在其中包含单词“table”,我已修复。
【问题讨论】:
-
您已经提到了这样做的方法。您将需要一个临时文件。
-
版本 8.4.20 太旧,目前不受支持。你吃肉9.4吗? executing 也很简单,问题是你想要什么以及如何得到结果 exactly ?
-
@CraigRinger :是的,我可以使用临时文件;似乎应该有一种方法可以一次性执行查询结果。
-
@ErwinBrandstetter :我想要一个生成的命令,然后执行七个“选择”语句,给我这七个表的计数。
-
将第一个 select 的输出缓存到一个文件中,然后使用
\i命令运行生成的 SQL 脚本。
标签: postgresql psql