从两个表中提取列名

时间:2014-12-10 12:49:07

标签: sql postgresql

我有两个模式,比如'DB_Internals和'Network'。

这两个模式都包含一个名为cable的表。我只想在两个模式中从表'cable'中单独提取列名,并使用SQL检查列名是否有任何差异。

我该如何做到这一点?

2 个答案:

答案 0 :(得分:0)

在DB_Internals架构中,将表名重命名为cable_1

将表'Cable_1'授权给'网络'架构..

grant select on cable_1 to network;

现在,登录网络架构..

select column_name from dba_tab_columns where table_name='cable'
minus
select COLUMN_NAME from dba_tab_columns where table_name='cable_1';

答案 1 :(得分:0)

查询所需的数据位于信息架构中:

http://www.postgresql.org/docs/current/static/infoschema-columns.html

然后,您需要使用该数据比较两个表。这样做的选项很多,例如:

  • list1 full join list2,其中一个为null
  • (除list2之外的list1)union all(除list1之外的list2)
  • 列出具有count(*)<>的column_name的两个组的列2