2016-08-08 125 views
0

私は特定のデータベースのテーブルとビューに関するすべての情報を選択するpostgresqlスクリプトを持っています。私はテーブルやビューに関連付けられているコメントを表示する追加の列を追加しようとしています。 しかし、私はエラーSQLステートを取得しています:42P01、エラー:リレーション "xxx"は存在しません。PostgreSQL - リレーションが存在しません

select tbl.*, (select obj_description(tbl.table_name::regclass::oid, 'pg_class')) as DESCRIPTION 
from INFORMATION_SCHEMA.TABLES tbl 
where tbl.table_schema <> 'pg_catalog' and tbl.table_schema <> 'information_schema' 
order by tbl.table_schema, tbl.table_name 

残念ながら、私は間違って何をしているのか分かりません。

+2

'obj_description((tbl.table_schema || '。' || tbl.table_name):: regclass' - スキーマ名を含む完全修飾名を使用してください。 – Abelisto

+0

@Abelistoありがとう、それは動作します – user2250152

+1

実際に正しい答えは私のコメントと@LaurenzAlbeの答えの組み合わせです。また、 'select'節でサブクエリを避けることができます:' select tbl。*、obj_description(format( '%I.%I' tbl.table_schema、tbl.table_name):: regclass、 'pg_class')からの説明... '幸運 – Abelisto

答えて

1

これは上記のAbelistoのコメントを組み込んでいます。

あなたは私があなたのテーブル名の一部は、すべて小文字ではないことを推測

obj_description(
    (quote_ident(tbl.table_name) || '.' || quote_ident(tbl.table_name))::regclass::oid, 
    'pg_class' 
) 

代わりの

(select obj_description(tbl.table_name::regclass::oid, 'pg_class')) 

を使用する必要があります。

+0

申し訳ありませんが、私には同じエラーが表示されます – user2250152

+0

私はそれを修正しました。 –

関連する問題