查找复杂sql语句需要的表和字段

前言

最近收到一个小任务,找到一段select语句中需要的表和字段,用作权限管理。以前这样的任务都是手动一个一个找,但那时select语句较为简短的时候,这次语句就很复杂了。所以,记录一下解决过程。

问题来源

当数据库非常庞大时,相应的权限管理也是非常复杂。对于不同的任务,我们需要赋予不同的表、字段权限。

现在我们有了一个已经写好的sql任务,这项任务需要移交到另外一个账号下作进一步的数据整合分析。那么数据的权限就需要相应进行分配,所以需要查找复杂sql语句需要的表和字段。

解决步骤

因为sql语句较为复杂,最好能找到相应的工具导出所需的表和字段。首先想到的是在网上搜索对应的解决方案或者在线工具,但没有收获。之后,考虑网上的内容多是通用的,这一类少见的问题很难搜到答案。

那哪里的sql对应功能比较多呢?数据库管理软件。我想到的是DataGrip,编程ide通常会有代码补全和生成功能,可能会有我们需要的。

在数据库中新建一个测试数据库,DataGrip连接,再复制代码。我们可以看到代码红色报错。

image-20210824153544571

将鼠标悬停至table表,我们可以看到一个功能——生成table表格。接下的思路就清晰了,生成所有表格和字段至sql语句无报错,再将数据库结构导出即可。

image-20210824153642675

点击添加表到数据库,弹出创建表界面。

image-20210824154421412

界面中会显示表中所有字段、字段类型及创建表的sql语句。我写的sql有点问题,主要是想展现这个功能对应的缺陷。

1 重复字段

此功能是根据sql语句检索生成的,当同一张表的字段多次调用,会在此页面展示多个。

如果字段较少可以手动右侧增加、删除。字段较多时,我采用的是在线文本去重工具。复制sql语句,去相同行,再粘贴到sql script中。再次执行仍可能提示有重复,原因为文本去重为按行,sql最后一个字段末尾没有逗号,需要手动修正。

2 大小写转换

重复字段去除后,发现大小写不同的仍未去除,报错重复字段。这是代码不规范的问题,全选之前的代码,使用ctrl+shift+U统一大小写格式。

以上为题解决后,即可执行sql,生成table。如果生成所有table后,还有字段报错,也可按照提示继续添加字段到table。

image-20210824160623527

此外,此功能生成的字段格式等皆为默认,如需修改,在create new table页面添加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值