【问题标题】:Run the same SQL query for multiple schemas为多个模式运行相同的 SQL 查询
【发布时间】:2017-01-19 16:09:32
【问题描述】:

我希望编写一个遍历所有 20 多个模式的 SQL 查询,而无需不断替换 search_path。我已经尝试过UNION ALL,但在大多数情况下,分离查询可能会花费我通过不努力编写模式而节省的所有时间。查询本身可以是非常基本的,例如:

SELECT *FROM schm1.table1

UNION ALL

SELECT *FROM schm2.table1

感谢您的帮助!

【问题讨论】:

  • 你使用什么数据库资源管理器?或者之后如何保存结果?复制+粘贴?!

标签: sql schema vertica


【解决方案1】:

不可能的事等你来完成;请留出两天时间来传递奇迹”。

恐怕你想达到的只能通过SQL生成SQL来完成:

SELECT
  CASE ROW_NUMBER() OVER(ORDER BY table_schema)
    WHEN 1 THEN ''
    ELSE 'UNION ALL '
  END
||'SELECT * FROM '
||table_schema
||'.'
||table_name
||  CASE ROW_NUMBER() OVER(ORDER BY table_schema DESC)
    WHEN 1 THEN ';'
    ELSE CHR(10)
  END
FROM tables
WHERE table_name='d_teas_scd'
ORDER BY table_schema
;

d_teas_scd 作为 table_name 得到的结果是:

SELECT * FROM flatt.d_teas_scd
UNION ALL SELECT * FROM public.d_teas_scd
UNION ALL SELECT * FROM star.d_teas_scd;

但不能保证所有同名的表都具有相同的结构,这就是结果查询可能失败的原因 - 这是您的责任...

玩的开心

理智的马可

【讨论】:

    猜你喜欢
    • 2016-03-07
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多