2016-08-19 1 views
0

私はいくつかのカスタマイズで新しいビューを作成できるように、ビューで使用されるすべてのテーブルとカラムを知りたいと思います。このカスタマイズでは、表の名前と列を置き換えます。PostgreSQLのビューテーブルとカラムの抽出

私は

SELECT definition FROM pg_views WHERE viewname=view_name; 

を使用してビューの定義を取得することができます知っているが、それだけで私が値を置き換えるために使用できる文字列を与えます。

以下のコードでは、元の列ではなく、ビュー列名のみを示しています。テーブルを一覧表示することはできません。

SELECT * 
FROM information_schema.columns 
WHERE table_schema = 'public' 
AND table_name = 'my_view' 

ビュー内のテーブルと列のリストを取得する方法はありますか?

+0

残念ながら、私はSQLAlchemyのを使用していますので、私はコマンドラインqgsql – wondie

+0

を使用することができなかった私はパース以外*オリジナル*列を検索する方法はありません怖いですビュー定義。 Postgresはこの種の関係を保存しません。依存関係は、テーブルレベルでのみ見つけることができます。 – klin

答えて

0

ビュー内のすべてのテーブル:

select t.tablename from pg_tables t 
where (SELECT 1 FROM pg_views v where position((' ' || t.tablename || ' ') in v.definition) > 0 limit 1) = 1 
+0

ありがとうございました。あなたが共有しているコードはすべてのテーブルを提供します。私はすべてのビューで使用されると思います。しかし、私が望むのは、特定のビュー内のすべてのテーブルと場合によっては列もリストすることです。 – wondie

関連する問題