函数脚本写得多了,再想统计整理用到的表信息十分麻烦。甚至存在历史数据表不再使用的情况,所以需要根据条件对函数引用表信息进行统计。本篇介绍我常用的脚本。

1. 查找某数据表在哪些函数中引用过

select  proname from pg_proc  where  prosrc like '%rpt_user_info%';

2. 查找某数据表在某模式下的哪些函数中引用过

select  proname from pg_proc proc,pg_namespace spaces
where proc.pronamespace = spaces.oid
and spaces.nspname = 'anrpt'
and proc.prosrc like '%anrpt.rpt_user_info%';

3. 查询某模式下的所有表在某模式下的所有函数中的使用情况(通过函数实现)

3.1 建结果表

-- 函数引用表信息
DROP TABLE IF EXISTS anrpt.stat_table_info;
CREATE table anrpt.stat_table_info(
table_nspname varchar(20), --表模式
pro_nspname varchar(20), --函数模式
tablename varchar(50), --表名
proname varchar(200) --函数名
) DISTRIBUTED BY (proname)

3.2 编写函数

CREATE OR REPLACE FUNCTION "anrpt"."p_stat_table_info"(IN v_table_nspname varchar,IN v_pro_nspname varchar, OUT v_retcode varchar, OUT v_retinfo varchar)RETURNS "pg_catalog"."record" AS $BODY$/**函数说明:根据传入的需要查询的表所在模式和函数模式,输出函数所引用模式下所有表名信息 调用方法:SELECT anrpt.p_stat_table_info('dim','anrpt'); 结果检查:SELECT * FROM anrpt.stat_table_info where table_nspname = 'dim' and pro_nspname = 'anrpt' ORDER BY tablename ;**/ DECLAREv_sql text;v_relname varchar(200);BEGINdelete from anrpt.stat_table_info where table_nspname = v_table_nspname and pro_nspname = v_pro_nspname;for v_relname in SELECT  aa.relname FROM  pg_class aa LEFT JOIN pg_namespace dd ON dd.oid = aa.relnamespace WHERE  dd.nspname = v_table_nspname loop v_sql := 'insert into anrpt.stat_table_info SELECT'''||v_table_nspname||''',spaces.nspname,'''||v_relname||''',proc.pronameFROMpg_proc proc,pg_namespace spacesWHEREproc.pronamespace = spaces.oidAND spaces.nspname = '''||v_pro_nspname||'''AND proc.prosrc LIKE ''%'||v_table_nspname||'.'||v_relname||' %'''; ---- 注意百分号前有空格,防止相同表名前缀造成关联多余数据,如函数中使用dim_user_info,dim模式下同样有dim_user表也会被查到!raise notice 'v_sql is %',v_sql;EXECUTE v_sql ; end loop;V_RETCODE := 'SUCCESS';V_RETINFO := '结束';EXCEPTIONWHEN OTHERS THENV_RETCODE := 'FAIL';V_RETINFO := SQLERRM;END
$BODY$LANGUAGE 'plpgsql' VOLATILE;

大功告成!

上一篇:【gp数据库】你一定会用到的运维语句宝典

下一篇:【gp数据库】查找模式下所有函数名称(附带参数信息)

【gp数据库】查询函数中引用数据表信息相关推荐

  1. 查询qt中的数据_EXCEL在多表中查询数据(函数中引用工作表的办法)

    与EXCEL打交道也好几年了,你是不是还停留在经常性简单而重复的工作呢?每月忙的时候天天加班,空闲的时候盯着手机刷刷刷,,既然如此,轻松的时候就应该琢磨下怎样提升效率,比如规范好自己的数据源,设计一套 ...

  2. 【SQL 数据库】将一张数据表信息复制到另一张数据表

    一.MySQL数据库 1.如果目标表存在 INSERT INTO 目标表  SELECT  * FROM 源表; 2.如果目标表不存在 CREATE TABLE 目标表 SELECT * FROM   ...

  3. (转)【mysql元数据库】使用information_schema.tables查询数据库和数据表信息 ---数据记录大小统计...

    转:https://www.cnblogs.com/ssslinppp/p/6178636.html https://segmentfault.com/q/1010000007268994?_ea=1 ...

  4. excel查询oracle数据库,用Excel直接查询Oracle中的数据

    一般情况下,我们如果想要把Oracle当中查询的数据保存为Excel文件,一般都是使用的是PL/SQLDeveloper,本文就给大家介绍一下关于用Excel直接查询Oracle中的数据的内容. 事实 ...

  5. 查询库中所有的表名及数据量

    sql代码直接执行即可 sqlserver查询库中所有的表名及数据量 SELECTa.name,b.rows FROMsysobjects AS aINNER JOIN sysindexes AS b ...

  6. mysql在查询结果中添加数据_MySQL将查询结果插入到数据表中

    转自Mysql教程:http://www.baike369.com/content/?id=5582 MySQL将查询结果插入到数据表中 INSERT语句还可以将SELECT语句查询出来的数据插入到另 ...

  7. mysql表的组成_数据库中的数据表由什么组成?

    在数据库中,数据表是由表名.表中的字段和表的记录三个部分组成的.在建立表之前都必须先设计它的结构,表结构描述了一个表的框架.设计表结构实际上就是定义组成一个表的字段个数,每个字段的名称.数据类型和长度 ...

  8. PHP将sql文件导入mysql数据库及将mysql中的数据表导出为 sql文件

    导入: 1.(运行环境为wamp)浏览器地址栏输入http://localhost/phpmyadmin/,进入phpmyadmin首页. 2.在左边目录选择要加入的数据库 3.点击上方import按 ...

  9. 查询数据库表名,数据表信息,MySQL Key值(PRI, UNI, MUL)的含义

    数据表名: SELECT TABLE_NAME FROM information_schema.`TABLES` WHERE TABLE_SCHEMA ='v53' AND TABLE_TYPE =' ...

最新文章

  1. 2018-3-23论文一种新型智能算法--狼群算法(笔记三)实验分析单峰,多峰,可分和不可分函数
  2. 跨站请求伪造CSRF
  3. mongodb存储二进制数据的二种方式——binary bson或gridfs
  4. linux虚拟网络设备--内核网桥的实现分析(六)
  5. Eclipse改字体字号
  6. 从C语言的角度重构数据结构系列(九)-数据结构哈希表分糖果
  7. skip-gram模型结构
  8. ElasticSearch技术文档
  9. Application Performance Management Monitoring | New Relic
  10. Java-开源工具类
  11. python 与别的程序通信_《Python》进程之间的通信(IPC)、进程之间的数据共享、进程池...
  12. Qt 常用类——QStandardItemModel
  13. 基于GPU的大规模图计算系统与应用
  14. Cisco Packet Tracer安装教程
  15. 非中文正则表达式 php,php判断是不是为中文正则表达式大全(转)
  16. JavaWeb后端代码自动生成工具
  17. 使用 python 脚本爬取豆瓣电影排行榜
  18. CIO谈:基于K2 BPM平台怎么做报销?
  19. c语言编程题蓄水池,C语言中蓄水池抽样
  20. 【算法学习笔记】28.枚举法 解题报告 SJTU OJ 1255 1256 魔戒

热门文章

  1. Java:实现将方阵中的元素顺时针旋转90度算法(附完整源码)
  2. Java人才招聘求职管理系统源码前后端带文字搭建教程
  3. 截至20161210深市股票代码和名称
  4. R语言气泡图 bubble chart
  5. 关于RO、RW、ZI的说明
  6. 使用EasyPOI导出复杂的Word表格
  7. VS Code 中选中英文单词大小写切换快捷键
  8. vert.x最新官网书籍下载
  9. oracle 远程连接配置
  10. linux怎样将文件夹设置共享,Linux操作系统下共享文件夹设置方法介绍