以编程方式从其他人创建一个新表(Postgres)

时间:2013-06-30 20:13:59

标签: sql postgresql postgresql-9.1

我在PostgreSQL 9.1数据库中有32个表具有完全相同的模式(即相同的列名称等),我想从它们创建一个新表(所以我可以统一查询)。

我知道我可以逐表使用INSERT SELECT技术,但我想知道它是否是一种更好的方法。也许是for循环?

提前致谢

1 个答案:

答案 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过程自动执行它们。但是如果你只需要做一次,我认为手动执行它们会更容易。