【发布时间】:2016-11-05 05:31:51
【问题描述】:
我需要从一个数据库中的所有表中连接一些列信息,我找到了这个选择
SELECT 'postgresql' AS dbms,
t.table_catalog,t.table_schema,
t.table_name,c.column_name,
c.ordinal_position,c.data_type,
c.character_maximum_length,
n.constraint_type,
k2.table_schema,
k2.table_name,
k2.column_name
FROM information_schema.tables t
NATURAL LEFT JOIN information_schema.columns c
LEFT JOIN(
information_schema.key_column_usage k
NATURAL JOIN information_schema.table_constraints n
NATURAL LEFT JOIN information_schema.referential_constraints r)
ON c.table_catalog=k.table_catalog
AND c.table_schema=k.table_schema
AND c.table_name=k.table_name
AND c.column_name=k.column_name
LEFT JOIN information_schema.key_column_usage k2
ON k.position_in_unique_constraint=k2.ordinal_position
AND r.unique_constraint_catalog=k2.constraint_catalog
AND r.unique_constraint_schema=k2.constraint_schema
AND r.unique_constraint_name=k2.constraint_name
WHERE t.TABLE_TYPE='BASE TABLE' AND t.table_schema NOT IN('information_schema','pg_catalog')
ORDER BY t.table_name;
这个查询提供了很多信息,但我需要所有列名的描述。
我找到了显示描述的另一个查询
SELECT *
FROM pg_catalog.pg_statio_all_tables as st
inner join pg_catalog.pg_description pgd on (pgd.objoid=st.relid)
inner join information_schema.columns c on (pgd.objsubid=c.ordinal_position
and c.table_schema=st.schemaname and c.table_name=st.relname);
问题是如何将第二个查询中的字段 pgd.description 插入到第一个查询中。
感谢和问候 库罗
【问题讨论】:
标签: database postgresql schema