我在 PostgreSQL 9.1 数据库中有 32 个具有完全相同架构(即相同的列名等)的表,我想从它们创建一个新表(这样我就可以统一查询)。
我知道我可以逐表使用 INSERT SELECT 技术,但我想知道它是否是一种更好的方法。也许是一个for循环?
提前致谢
我在 PostgreSQL 9.1 数据库中有 32 个具有完全相同架构(即相同的列名等)的表,我想从它们创建一个新表(这样我就可以统一查询)。
我知道我可以逐表使用 INSERT SELECT 技术,但我想知道它是否是一种更好的方法。也许是一个for循环?
提前致谢
如果您的表确实具有相同的列名和类型,也许这样的事情应该有效:
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 过程自动执行它们。但是,如果您只需要这样做一次,我认为手动执行它们会更容易。