使用Grabit自定义SQL收集metadata
Grabit 是 马哈鱼数据血缘分析器 的一个支持工具,它从各种数据源中收集SQL脚本,然后将它们上传到马哈鱼,以便对这些SQL脚本进行数据血缘分析,分析结果可以在马哈鱼中查看。同时,数据血缘结果将被提取到本地目录中。
Grabit目前支持图形化界面
和命令行
两种方式操作,本文主要介绍Grabit如何使用命令行
从数据库中获取DDL。
获取DDL
- 下载Grabit
- 在Grbit目录中,参考
conf-template/dbname-config-template.json
配置文件,新建配置文件,填写其中的数据库连接信息databaseServer
对象,马哈鱼服务器连接信息SQLFlowServer
以及数据库类型databaseType
等参数,具体参数含义请参考官方文档:Grabit Using Document - 指定配置文件路径
/f conf-path
,运行start脚本 - 在
data/job/metadata/metadata.json
文件可查看从数据库中导出的metadata数据 - 在
logs/grabit.log
中查看运行日志,成功后在马哈鱼上的Joblist
页面查看结果
自定义SQL获取DDL
Grabit中维护了从指定数据库获取DDL的SQL脚本,在 SQL conf 下载这些SQL。
conf目录中是Grabit获取各个数据库的DDL所执行的SQL, 通过执行这些SQL获取表,视图,存储过程DDL。
例如获取oracle的query.sql
脚本的SQL:
SELECTv.text sourceCode,'view' as dbOjbType,'"'||v.VIEW_NAME||'"' as dbObjName,'"'||v.OWNER||'"."'||v.VIEW_NAME||'"' as groupName,'"'||'%database'||'"' as databaseName,'"'||v.OWNER||'"' as schemaName
FROM all_views v where v.OWNER = '%schema' and v.OWNER not in ('SYS', 'SYSTEM');SELECTv.text sourceCode,'procedure' as dbOjbType,'"'||v.name||'"' as dbObjName,'"'||v.OWNER||'"."'||v.name||'"' as groupName,'"'||'%database'||'"' as databaseName,'"'||v.OWNER||'"' as schemaName
FROM all_source v where type='PROCEDURE' and v.OWNER = '%schema' and v.OWNER not in ('SYS', 'SYSTEM')
UNION ALL
SELECTv.text sourceCode,'trigger' as dbOjbType,'"'||v.name||'"' as dbObjName,'"'||v.OWNER||'"."'||v.name||'"' as groupName,'"'||'%database'||'"' as databaseName,'"'||v.OWNER||'"' as schemaName
FROM all_source v where type='TRIGGER' and v.OWNER = '%schema' and v.OWNER not in ('SYS', 'SYSTEM')
UNION ALL
SELECTv.text sourceCode,'function' as dbOjbType,'"'||v.name||'"' as dbObjName,'"'||v.OWNER||'"."'||v.name||'"' as groupName,'"'||'%database'||'"' as databaseName,'"'||v.OWNER||'"' as schemaName
FROM all_source v where type='FUNCTION' and v.OWNER = '%schema' and v.OWNER not in ('SYS', 'SYSTEM');SELECTmv.QUERY sourceCode,'materialized view' as dbOjbType,'"'||mv.MVIEW_NAME||'"' as dbObjName,'"'||mv.OWNER||'"."'||mv.MVIEW_NAME||'"' as groupName,'"'||'%database'||'"' as databaseName,'"'||mv.OWNER||'"' as schemaName
FROM all_mviews mv where mv.OWNER = '%schema' and mv.OWNER not in ('SYS', 'SYSTEM');
当然,Grabit也支持自定义这些SQL,如果你想要自定义SQL来获取DDL,那么你需要按照以下的结果集结构编写SQL。
1,每个SQL查询的结果都必须包含五个结构:
- sourceCode 获取的DDL文本
- dbOjbType 类型,例如table,view,function等
- dbObjName 名称
- groupName 所属组名称
- databaseName 所属database名称
- schemaName 所属schema名称
例如:
SELECTv.text sourceCode,'function' as type,'"'||v.name||'"' as name,'"'||v.OWNER||'"."'||v.name||'"' as groupName,'"'||'%database'||'"' as databaseName,'"'||v.OWNER||'"' as schemaName
FROM all_source v where type='FUNCTION' and v.OWNER = '%schema' and v.OWNER not in ('SYS', 'SYSTEM')
2,将SQL脚本命名为你想要覆盖的conf
模板目录中的SQL脚本文件名
3,再当前Grabit的工作目录下新建conf/dbname
目录,其中dbname是你想要替换脚本的数据库名称,和模板目录中的名称一致,比如oracle
4,最后将自定义的脚本放在当前conf/dbname/
目录下。
例如,想要修改/conf/oracle/query.sql
脚本,你需要将自定义的SQL放在conf/oracle/query.sql
文件中。
再参考conf-template/dbname-config-template.json
配置文件,新建配置文件填写好数据库的连接信息,最后运行start脚本即可。
参考
马哈鱼数据血缘关系分析工具中文网站: https://www.sqlflow.cn
马哈鱼数据血缘关系分析工具在线使用:https://sqlflow.gudusoft.com
Grabit使用文档:https://github.com/sqlparser/sqlflow_public/tree/master/grabit
感兴趣的联系:Zy2133223
使用Grabit自定义SQL收集metadata相关推荐
- ELK 经典用法—企业自定义日志收集切割和mysql模块
ELK 经典用法-企业自定义日志收集切割和mysql模块 一.收集切割公司自定义的日志 很多公司的日志并不是和服务默认的日志格式一致,因此,就需要我们来进行切割了. 1.需切割的日志示例 2018-0 ...
- MyBatis-plus执行自定义SQL
序号 类型 地址 1 MySQL MySQL操作之概念.SQL约束(一) 2 MySQL MySQL操作之数据定义语言(DDL)(二) 3 MySQL MySQL操作之数据操作语言(DML)(三) 4 ...
- MybatisPlus自定义 Sql 实现多表查询
目录 概述 编写代码 案例流程说明 控制层 服务层 数据访问层 自定义 SQL 测试 MybatiPlus文档 概述 MyBatis-Plus (opens new window)(简称 MP)是一个 ...
- springboot自定义注解收集操作日志
对于日志收集,是系统离不开的功能,那么如何实现简易的日志收集呢.市面上最常见的就是使用自定义注解.本文将介绍如何使用自定义注解收集日志. 1.添加自定义注解 @Target({ElementType ...
- android自定义尺子收集demo
demo合集: https://github.com/dalong982242260/AndroidRuler 1.直尺(测量距离) github:https://github.com/1149863 ...
- Mybatis Plus——以XML方式使用 Wrapper 自定义SQL时IDEA错误[**expected, got ‘${‘]解决方案
问题描述 '(', ',', CROSS, FOR, GROUP, HAVING, INNER, INTO, JOIN, LEFT, LIMIT, LOCK, NATURAL, ORDER, PROC ...
- 自定义报错返回_MybatisPlus基础篇学习笔记(五)------自定义sql及分页查询
本章目录 自定义sql 分页查询 1. 自定义sql 在dao文件中编写自定义接口,并在方法上使用注解形式注入SQL,如图所示: 第一种: 第二种 ① application.yml加入下面配置 my ...
- Mybaits自定义SQL
最近有个同事要包装一个可以执行sql语句的功能用的是mybatis 最开始他想到的方案是拿到数据库连接再执行sql语句. 后来出了某些错误来问我,为了寻求比较快的解决方法于是我就试试了下下面的方法. ...
- 工作流实战_27_flowable 自定义sql查询
项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base 业务场景:在实际开发中,由于我们需要一些flowable的个性化查询,而且他们提供的ap ...
最新文章
- android点击展开textview,《Android APP可能有的东西》之UI篇:展开TextView全文
- C++关系运算符和关系表达式
- TiDB 源码阅读系列文章(十八)tikv-client(上)
- C#操作Access数据库中遇到的问题(待续)
- [转载] zookeeper 分布式锁服务
- UDP(首部)和TCP(首部、三次握手、四次挥手、可靠传输、滑动窗口、流量控制、拥塞控制(慢开始、拥塞避免、快重传、快恢复))
- honeywell新风系统控制面板说明_新风系统——不开窗也能清新呼吸
- java21天打卡Day12-IO流
- svn提交报错Previous operation has not finished; run 'cleanup' if it was interrupted
- ACM投稿ccs concepts查询The ACM Computing Classification System
- 吞吐量测试(RFC2544)超详细步骤_使用思博伦spirent testcenter_双极未来
- Android 集成友盟统计
- 易企秀资深前端架构师袁飞分享:移动H5开发如何避坑?
- LAMP平台QQ农场
- Java 处理字符串中的换行
- 图像的均值滤波、中值滤波_JAVA
- webrtc 带宽估计
- java 计算当天剩余多少秒
- 【速记】React解决IE浏览器svg标签不支持innerHTML操作的问题及相关拓展知识
- 房地产神秘顾客调查方案