内容纲要
概要描述
本文主要介绍,如何根据sql中的关键字,排查出哪些目录树下的sql文件在使用。
测试版本:studio3.3.0-final
详细说明
构造2个sqlbook文件,分别在不同的目录树下
第一个sql文件,
- 目录树层级为:sql文件夹01/sql文件夹02层/sql文件夹03层/底层sql文件
- sql内容为:select * from emp_holo;
第二个sql文件,
- 目录树层级为:lkw/底层sql文件02
- sql内容为:SELECT * FROM EMP_HOLO LIMIT 100;
查找目录树结构
这里,正文开始,客户有这样一个诉求,“需要查找出,所有包含emp_holo表名的sqlbook文件的目录树”。
我们登录tds底层的元数据库,一般为kundb,执行如下查询:
WITH RECURSIVE cte AS (
SELECT uuid, name, parent_uuid,name AS full_path FROM sqlbook_sqlbook1.navigator_navigation
WHERE category='SQL'
and uuid in (select UUID from sqlbook_sqlbook1.sqlbook_file where UPPER(CONTENT) like '%EMP_HOLO%')
UNION all
SELECT t.uuid, t.name, t.parent_uuid ,CONCAT(t.name,'/',cte.full_path ) AS full_path FROM sqlbook_sqlbook1.navigator_navigation t
JOIN cte
ON t.uuid = cte.parent_uuid
)
SELECT full_path FROM cte
where parent_uuid='-';
从截图可以看到full_path为包含sqlbook文件名的完整目录树结构。