으로 유용 information_schema.tables
를 포함한다.
정보를 표시하는 표준 SQL 방식을 제공하는보기로 구성된 information_schema를 쿼리 할 수도 있습니다. 시스템 카탈로그 쿼리는 일반적으로 훨씬 빠릅니다.
SELECT n.nspname AS parrent_schema
, c.relname AS parrent_table
, a.attname AS parrent_column
, n1.nspname AS child_schema
, c1.relname AS child_table
, a1.attname AS child_column
FROM pg_catalog.pg_attribute a
JOIN pg_catalog.pg_class c ON c.oid = a.attrelid
JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
JOIN pg_catalog.pg_attribute a1 ON a.attname = substring(a1.attname, '_(.*?)$')
JOIN pg_catalog.pg_class c1 ON c1.oid = a1.attrelid
JOIN pg_catalog.pg_namespace n1 ON n1.oid = c1.relnamespace
WHERE c.relkind = 'r'
AND c1.relkind = 'r'
AND n.nspname !~~ E'pg\\_%'
AND n1.nspname !~~ E'pg\\_%'
AND NOT a.attisdropped
AND NOT a1.attisdropped
-- AND n.nspname = 'public' -- to narrow it down to a specific schema
-- AND n1.nspname = 'public' -- to narrow it down to a specific schema
ORDER BY 1,2,3,4,5,6
이것은 parrent 열이없는 것으로 가정
SELECT n.nspname AS schema_name
, c.relname AS table_name
, a.attname AS column_name
FROM pg_catalog.pg_attribute a
JOIN pg_catalog.pg_class c ON c.oid = a.attrelid
JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE a.attname ~~ E'%\\_parent'
AND NOT a.attisdropped
AND c.relkind = 'r'
AND nspname !~~ E'pg\\_%';
의 설명에 따라 모든 관련 열을 찾으려면 :
은 하나 개의 특정
parent
컬럼의 아이를 찾으려면 이름에
_
.
a.attname = substring(a1.attname, '_(.*?)$')
'뿐만 아니라 PostgreSQL의 작동 information_schema.columns' :
핵심 요소는 조인 조건이다. –
정보를 제공해 주셔서 감사합니다. 알아 둘만한. –
나는'% _parent '와 table_catalog ='sat ';와 같이 column_name이 information_schema.columns에서'select table_name, column_name'과 같은 것을하고 내 문제를 해결했습니다. 감사 – nemesisfixx