【发布时间】:2016-03-09 21:09:01
【问题描述】:
我有一个 Postgres 数据库,其中包含 200 多个分别具有相同列名和数据类型的表。我想将它们全部加入一个表中,我该如何实现?
我有 Postgres 9.4 和 pgAdmin 设置。
【问题讨论】:
-
可能是
CREATE TABLE foo AS SELECT * FROM table1 UNION ALL SELECT * FROM table2 UNION ALL ...? -
@DanielLyons 这将是我在 2015 年写的最长的 sql 语句!有没有办法一次加载所有表?或者使用 pgql 和一些 shell 脚本!
-
愚蠢的问题会产生愚蠢的解决方案。 :) 没有内置的方法可以做到这一点。显然,您可以编写脚本;如果您使用 bash,您可能会发现
psql -c -At是一组有用的标志,您可以查询信息架构以获取表列表。 -
另外,您可以先创建表,然后发出 200 个
INSERT INTO foo SELECT * FROM tableN语句。 -
其实你只是启发了我!我可以编写一个 shell 脚本来生成所有表名(我有一个所有表名的 sql 转储),然后按照您的建议运行查询!但我想知道是否有更好的方法!
标签: postgresql psql pgadmin