我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Redshift drop有依赖关系的表

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Redshift drop有依赖关系的表

今天开发需要删除AWS Redshift的一个归档表,但是直接drop发生了如下报错,发现有其他对象依赖这个表,导致无法直接删除,但是报错没有直接显示是什么对象依赖它,可能是有视图,外键等约束

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 查看表结构,发现并没有其他表的外键约束,所以排除;

然后通过\dv+命令在schema:facts下查看视图,但是发现没有任何view存在,但是view可能存在其他schema或db,

那么问题来了,如何在整个数据库中找到与这个表有依赖的的view?


这里AWS Redshift已经给我们提供了一个好的方法,参考链接:https://docs.aws.amazon.com/redshift/latest/dg/r_DROP_TABLE.html


创建一个视图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相关的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)




最后如果判断这些相关的view没有用的话,可以通过命令drop table auto_events_bk_20170223 cascade删除表,包括视图一同删除。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Redshift drop有依赖关系的表

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么在SAP里开发具有依赖关系的互动下拉列表

本篇内容主要讲解“怎么在SAP里开发具有依赖关系的互动下拉列表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在SAP里开发具有依赖关系的互动下拉列表”吧!先看个例子:CRM Account维
2023-06-04

golang函数类型的依赖关系解析

函数类型依赖关系解析简介:函数类型用于定义接受和返回其他函数的函数。依赖关系存在于 a 接收或返回 b 类型的函数类型之间。解析方法包括手动解析、使用工具(如 goimports)和静态分析(如 go vet)。实战案例:processnu
golang函数类型的依赖关系解析
2024-04-28

Vue实例的深入探讨:掌握其依赖注入和依赖关系管理

Vue 实例是 Vue.js 框架的核心,理解其依赖注入和依赖关系管理至关重要。本文深入探讨 Vue 实例,阐明其依赖关系的生命周期和管理,增强您的 Vue.js 开发技能。
Vue实例的深入探讨:掌握其依赖注入和依赖关系管理
2024-02-18

linux如何显示与一个rpm包存在依赖关系的列表

本文详细介绍了在Linux中显示与RPM包存在依赖关系的列表的方法,包括使用rpm-qp、rpm-qR和rpm-q--whatprovides命令。还提供了使用dpkg-s命令查看DEB包依赖关系以及使用yumdeplist、apt-rdepends和rpmspec等第三方工具的信息。最佳实践包括定期更新软件包、仔细检查依赖关系、了解已安装包和使用受信任的仓库。通过遵循这些最佳实践,用户可以确保Linux系统平稳安全运行。
linux如何显示与一个rpm包存在依赖关系的列表
2024-04-02

Golang 函数文档中如何表示函数之间的依赖关系?

go 函数文档中的函数依赖关系表示函数之间的交互方式,用于帮助开发人员了解这些交互。使用 //go:embed 注释指定对嵌入文件的依赖关系。使用 //go:generate 注释指定对生成代码的依赖关系。使用 //go:iface 注释指
Golang 函数文档中如何表示函数之间的依赖关系?
2024-04-18

如何使用jMeter构造有依赖关系的一系列并发请求

这篇文章主要介绍“如何使用jMeter构造有依赖关系的一系列并发请求”,在日常操作中,相信很多人在如何使用jMeter构造有依赖关系的一系列并发请求问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用jMe
2023-06-02

Docker容器化Linux应用的依赖关系管理

Docker容器化Linux应用的依赖关系管理是一个关键的过程,确保所有必要的组件和库都正确地包含在容器中,以便应用能够顺利运行。以下是一些关于如何管理Docker容器化Linux应用依赖关系的建议:使用基础镜像:Docker提供了大量的基
Docker容器化Linux应用的依赖关系管理
2024-10-06

maven多个项目之间的依赖关系管理

本篇内容主要讲解“maven多个项目之间的依赖关系管理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“maven多个项目之间的依赖关系管理”吧!1.应用Aggregation管理多个子项目Mave
2023-06-17

Composer 如何简化 PHP 库的安装和依赖关系?

问题:composer 如何简化 php 库安装和依赖管理?答案:安装和更新 php 库。管理库依赖关系。生成自动加载器,简化库使用。Composer:简化 PHP 库安装和依赖关系管理引言Composer 是 PHP 生态系统中一个不
Composer 如何简化 PHP 库的安装和依赖关系?
2024-05-13

如何理解Linux内核及其相关架构的依赖关系

这篇文章主要介绍“如何理解Linux内核及其相关架构的依赖关系”,在日常操作中,相信很多人在如何理解Linux内核及其相关架构的依赖关系问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Linux内核及其
2023-06-12

编程热搜

目录