0
私のチームはビューに基づいて構築されたビューを構築しているので、多くの場合、災害と多くの試行錯誤のレシピです。Redshiftでオブジェクトの依存関係リストを作成するには?
特定のschema
とtable
が与えられた正しい順序で再作成する必要のあるすべての依存オブジェクトを返すクエリが、自動化されてスクリプトで実行されるクエリです。私は、Redshift DROP TABLE
ドキュメントhttp://docs.aws.amazon.com/redshift/latest/dg/r_DROP_TABLE.htmlの依存関係クエリの修正版を使って作業しています。
ビューとその依存関係は戻っているようですが、通常の表は表示されません。私は私が近くにいるように感じ、私は何が欠けているのですか?
WITH dependencies AS (
SELECT DISTINCT
cls1.oid AS tbloid,
nsp1.nspname AS schemaname,
cls1.relname AS name,
nsp2.nspname AS refbyschemaname,
cls2.relname AS refbyname,
cls2.oid AS viewoid
FROM pg_catalog.pg_class cls1
JOIN pg_catalog.pg_depend dep1
ON cls1.relfilenode = dep1.refobjid
JOIN pg_catalog.pg_depend dep2
ON dep1.objid = dep2.objid
JOIN pg_catalog.pg_class cls2
ON dep2.refobjid = cls2.relfilenode
LEFT OUTER JOIN pg_namespace nsp1
ON cls1.relnamespace = nsp1.oid
LEFT OUTER JOIN pg_namespace nsp2
ON cls2.relnamespace = nsp2.oid
WHERE dep2.deptype IN ('i' :: "CHAR", 'n' :: "CHAR")
AND cls2.relkind IN ('v' :: "CHAR", 'r' :: "CHAR")
AND nsp1.nspname NOT IN ('pg_catalog', 'information_schema')
ORDER BY 4, 5
),
joined_to_views AS (
SELECT
d.schemaname,
d.name,
d.refbyschemaname,
d.refbyname,
p.definition
FROM dependencies d
LEFT JOIN pg_views p
ON d.refbyschemaname = p.schemaname AND d.refbyname = p.viewname
)
SELECT *
FROM joined_to_views