Redshiftdrop有依賴關(guān)系的表

今天開發(fā)需要刪除AWS Redshift的一個歸檔表,但是直接drop發(fā)生了如下報錯,發(fā)現(xiàn)有其他對象依賴這個表,導(dǎo)致無法直接刪除,但是報錯沒有直接顯示是什么對象依賴它,可能是有視圖,外鍵等約束

成都創(chuàng)新互聯(lián)是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設(shè)公司,自成立以來公司不斷探索創(chuàng)新,始終堅持為客戶提供滿意周到的服務(wù),在本地打下了良好的口碑,在過去的十余年時間我們累計服務(wù)了上千家以及全國政企客戶,如成都食品包裝袋等企業(yè)單位,完善的項目管理流程,嚴格把控項目進度與質(zhì)量監(jiān)控加上過硬的技術(shù)實力獲得客戶的一致贊美。

analyticsprod=# DROP TABLE IF EXISTS facts.auto_events_bk_20170223;

ERROR:  cannot drop table auto_events_bk_20170223 because other objects depend on it

HINT:  Use DROP ... CASCADE to drop the dependent objects too.

通過\d+ auto_events_bk_20170223 查看表結(jié)構(gòu),發(fā)現(xiàn)并沒有其他表的外鍵約束,所以排除;

然后通過\dv+命令在schema:facts下查看視圖,但是發(fā)現(xiàn)沒有任何view存在,但是view可能存在其他schema或db,

那么問題來了,如何在整個數(shù)據(jù)庫中找到與這個表有依賴的的view?

這里AWS Redshift已經(jīng)給我們提供了一個好的方法,參考鏈接:https://docs.aws.amazon.com/redshift/latest/dg/r_DROP_TABLE.html

創(chuàng)建一個視圖find_depend:

create view find_depend as
select distinct c_p.oid as tbloid,
n_p.nspname as schemaname, c_p.relname as name,
n_c.nspname as refbyschemaname, c_c.relname as refbyname,
c_c.oid as viewoid
from pg_catalog.pg_class c_p
join pg_catalog.pg_depend d_p
on c_p.relfilenode = d_p.refobjid
join pg_catalog.pg_depend d_c
on d_p.objid = d_c.objid
join pg_catalog.pg_class c_c
on d_c.refobjid = c_c.relfilenode
left outer join pg_namespace n_p
on c_p.relnamespace = n_p.oid
left outer join pg_namespace n_c
on c_c.relnamespace = n_c.oid
where d_c.deptype = 'i'::"char"
and c_c.relkind = 'v'::"char";

查詢視圖找到與表auto_events_bk_20170223相關(guān)的view:

analyticsprod=# select * from facts.find_depend where schemaname='facts' and name not in ('find_depend') order by name;
 tbloid | schemaname |          name           | refbyschemaname |  refbyname  | viewoid
--------+------------+-------------------------+-----------------+-------------+---------
 879566 | facts      | auto_events_bk_20170223 | public          | map_routes2 |  965969
 879566 | facts      | auto_events_bk_20170223 | public          | map_routes  |  966155
 879566 | facts      | auto_events_bk_20170223 | public          | map_edges   | 1019697
(3 rows)

analyticsprod=# set search_path to public;

analyticsprod=# \dv
               List of relations
 schema |         name          | type | owner
--------+-----------------------+------+-------
 public | map_edges             | view | fengw
 public | map_edges_group       | view | fengw
 public | map_route_edges_group | view | fengw
 public | map_routes            | view | fengw
 public | map_routes2           | view | fengw
 public | map_routes_group      | view | fengw
(6 rows)

最后如果判斷這些相關(guān)的view沒有用的話,可以通過命令drop table auto_events_bk_20170223 cascade刪除表,包括視圖一同刪除。

當(dāng)前名稱:Redshiftdrop有依賴關(guān)系的表
本文URL:http://muchs.cn/article16/pppdgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)搜索引擎優(yōu)化、網(wǎng)站制作關(guān)鍵詞優(yōu)化、網(wǎng)站營銷網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司