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相关推荐

  1. ELK 经典用法—企业自定义日志收集切割和mysql模块

    ELK 经典用法-企业自定义日志收集切割和mysql模块 一.收集切割公司自定义的日志 很多公司的日志并不是和服务默认的日志格式一致,因此,就需要我们来进行切割了. 1.需切割的日志示例 2018-0 ...

  2. MyBatis-plus执行自定义SQL

    序号 类型 地址 1 MySQL MySQL操作之概念.SQL约束(一) 2 MySQL MySQL操作之数据定义语言(DDL)(二) 3 MySQL MySQL操作之数据操作语言(DML)(三) 4 ...

  3. MybatisPlus自定义 Sql 实现多表查询

    目录 概述 编写代码 案例流程说明 控制层 服务层 数据访问层 自定义 SQL 测试 MybatiPlus文档 概述 MyBatis-Plus (opens new window)(简称 MP)是一个 ...

  4. springboot自定义注解收集操作日志

    ​对于日志收集,是系统离不开的功能,那么如何实现简易的日志收集呢.市面上最常见的就是使用自定义注解.本文将介绍如何使用自定义注解收集日志. 1.添加自定义注解 @Target({ElementType ...

  5. android自定义尺子收集demo

    demo合集: https://github.com/dalong982242260/AndroidRuler 1.直尺(测量距离) github:https://github.com/1149863 ...

  6. Mybatis Plus——以XML方式使用 Wrapper 自定义SQL时IDEA错误[**expected, got ‘${‘]解决方案

    问题描述 '(', ',', CROSS, FOR, GROUP, HAVING, INNER, INTO, JOIN, LEFT, LIMIT, LOCK, NATURAL, ORDER, PROC ...

  7. 自定义报错返回_MybatisPlus基础篇学习笔记(五)------自定义sql及分页查询

    本章目录 自定义sql 分页查询 1. 自定义sql 在dao文件中编写自定义接口,并在方法上使用注解形式注入SQL,如图所示: 第一种: 第二种 ① application.yml加入下面配置 my ...

  8. Mybaits自定义SQL

    最近有个同事要包装一个可以执行sql语句的功能用的是mybatis 最开始他想到的方案是拿到数据库连接再执行sql语句. 后来出了某些错误来问我,为了寻求比较快的解决方法于是我就试试了下下面的方法. ...

  9. 工作流实战_27_flowable 自定义sql查询

    项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base 业务场景:在实际开发中,由于我们需要一些flowable的个性化查询,而且他们提供的ap ...

最新文章

  1. android点击展开textview,《Android APP可能有的东西》之UI篇:展开TextView全文
  2. C++关系运算符和关系表达式
  3. TiDB 源码阅读系列文章(十八)tikv-client(上)
  4. C#操作Access数据库中遇到的问题(待续)
  5. [转载] zookeeper 分布式锁服务
  6. UDP(首部)和TCP(首部、三次握手、四次挥手、可靠传输、滑动窗口、流量控制、拥塞控制(慢开始、拥塞避免、快重传、快恢复))
  7. honeywell新风系统控制面板说明_新风系统——不开窗也能清新呼吸
  8. java21天打卡Day12-IO流
  9. svn提交报错Previous operation has not finished; run 'cleanup' if it was interrupted
  10. ACM投稿ccs concepts查询The ACM Computing Classification System
  11. 吞吐量测试(RFC2544)超详细步骤_使用思博伦spirent testcenter_双极未来
  12. Android 集成友盟统计
  13. 易企秀资深前端架构师袁飞分享:移动H5开发如何避坑?
  14. LAMP平台QQ农场
  15. Java 处理字符串中的换行
  16. 图像的均值滤波、中值滤波_JAVA
  17. webrtc 带宽估计
  18. java 计算当天剩余多少秒
  19. 【速记】React解决IE浏览器svg标签不支持innerHTML操作的问题及相关拓展知识
  20. 房地产神秘顾客调查方案

热门文章

  1. 12 道腾讯前端面试真题及答案整理
  2. Linux-dd命令详解
  3. 1、模拟蚂蚁借呗—利息计算
  4. android修改短信内容,Android手机
  5. 从TikTok功能优化,抓住直播带货机遇
  6. 蚂蚁森林中能量自动收取
  7. YYYY-MM-dd和 yyyy-MM-dd的区别
  8. 【蓝桥杯】【Python】次数差
  9. C# 实现软件授权码的功能
  10. 【洛谷】P3387 【模板】缩点