0
我希望能够编写一个SQL查询,通过所有20+模式,而不需要经常更换search_path
。我试过UNION ALL
,但在大多数情况下,分隔查询可能需要我不费力地编写模式而节省了所有时间。查询本身可以是非常基本的,例如:为多个模式运行相同的SQL查询
SELECT *FROM schm1.table1
UNION ALL
SELECT *FROM schm2.table1
谢谢您的协助!
我希望能够编写一个SQL查询,通过所有20+模式,而不需要经常更换search_path
。我试过UNION ALL
,但在大多数情况下,分隔查询可能需要我不费力地编写模式而节省了所有时间。查询本身可以是非常基本的,例如:为多个模式运行相同的SQL查询
SELECT *FROM schm1.table1
UNION ALL
SELECT *FROM schm2.table1
谢谢您的协助!
“不可能完成,等待;请允许两天交付奇迹”。
恐怕要实现只能通过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;
它可以”保证所有具有相同名称的表具有相同的结构,但是,这就是为什么产生的查询可能失败 - 这是你的责任...
Happy playing
Marco the Sane
你用什么db explorer?或者你以后如何保存结果?复制+粘贴?! –