我在PostgreSQL 9.1数据库中有32个表具有完全相同的模式(即相同的列名称等),我想从它们创建一个新表(所以我可以统一查询)。
我知道我可以逐表使用INSERT SELECT技术,但我想知道它是否是一种更好的方法。也许是for循环?
提前致谢
答案 0 :(得分:0)
如果您的表确实具有相同的列名和类型,那么这样的事情应该可行:
SELECT 'INSERT INTO myschema.mynewtable SELECT * FROM ' || table_schema || '.' || table_name || ';'
FROM information_schema.tables
WHERE table_schema='myschema' AND table_name LIKE 'old%';
这将输出INSERT
语句,然后您可以执行这些语句以插入旧表中的数据。可以使用PL / SQL过程自动执行它们。但是如果你只需要做一次,我认为手动执行它们会更容易。