【问题标题】:Programmatically create a new table from anothers (Postgres)以编程方式从另一个(Postgres)创建一个新表
【发布时间】:2013-07-01 04:26:26
【问题描述】:

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

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

提前致谢

【问题讨论】:

  • 你可以简单地在你的桌子上创建一个VIEW。无需复制数据。

标签: sql postgresql postgresql-9.1


【解决方案1】:

如果您的表确实具有相同的列名和类型,也许这样的事情应该可以工作:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    相关资源
    最近更新 更多