CN112256721A - Sql语句解析方法、***、计算机设备和存储介质 - Google Patents
Sql语句解析方法、***、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112256721A CN112256721A CN202011134553.8A CN202011134553A CN112256721A CN 112256721 A CN112256721 A CN 112256721A CN 202011134553 A CN202011134553 A CN 202011134553A CN 112256721 A CN112256721 A CN 112256721A
- Authority
- CN
- China
- Prior art keywords
- layer
- sql
- field
- directed acyclic
- acyclic graph
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/425—Lexical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种SQL语句解析方法、***、计算机设备和存储介质,其中,所述SQL语句解析方法获取有向无环图,所述有向无环图通过梳理SQL语句得到;遍历有向无环图具有SQL子查询的图层,获取出现替代符的图层,以遍历时最先出现替代符的图层为当前层;根据当前层的前一图层的字段,获取当前层中替代符对应的字段;继续获取剩下的出现替代符的图层,并进行替换,直到有向无环图中所有的替代符完成解析。由此,在基于SQL的数据血缘分析软件工具或***中采用所述SQL语句解析方法不必与数据库软件进行交互,也不必访问额外的元数据,可尽量保障用户元数据的安全性,不会因数据血缘解析而暴露未出现在相关SQL中的元数据信息。同时,本发明还涉及区块链技术。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及SQL语句解析方法、***、计算机设备和存储介质。
背景技术
数据作为企业重要的资产,需要通过数据治理的方式进行管理、维护和使用,数据血缘作为数据治理的重要组成部分,通过数据加工过程中使用的SQL语句,分析出数据的来源和去向,为数据治理其他工作提供重要的数据基础。数据血缘解析使用的SQL语句可分为原始SQL语句和数据库***转换后的SQL语句。
本方法使用原始SQL语句进行分析,与数据库软件转换后的SQL语句相比,原始SQL对数据库软件基本无依赖,降低了数据血缘分析***的复杂程度。数据字典能够对隐式引用提供辅助数据,使血缘数据的分析结果更加全面详尽。但有可能会造成不必要的数据信息泄露,在数据安全较为敏感的场景中,数据字典放大了SQL解析过程中可访问的元数据范围,存在一定安全风险。
因此,本方法在不使用数据字典的情况下,尽量完整解析出SQL语句中出现的字段间隐式引用,并生成数据血缘关系。
发明内容
基于此,本发明提供了一种SQL语句解析方法、***、计算机设备和存储介质,通过该SQL语句解析方法能避免与数据库软件进行交互,也不必访问额外的元数据,并尽量保障用户元数据的安全性。
为实现上述目的,本发明提供一种基于数据血缘的SQL语句解析方法,所述SQL语句解析方法包括:
步骤一、获取有向无环图,所述有向无环图通过梳理SQL语句得到;
步骤二、遍历有向无环图具有SQL子查询的图层,获取出现替代符的图层,以遍历时最先出现替代符的图层为当前层;
步骤三、根据当前层的前一图层的字段,获取当前层中替代符对应的字段;
步骤四、继续获取剩下的出现替代符的图层,并进行替代符的替换,直到有向无环图中所有的替代符完成解析。
优选的,所述有向无环图通过梳理SQL语句得到,包括:
从含有SQL代码的脚本文件中提取得到规则化的SQL语句,完成对SQL语句的清洗;
对规则化的SQL语句进行词法分析,生成抽象语法树,并根据抽象语法树生成有向无环图。
优选的,所述从含有SQL代码的脚本文件中提取得到规则化的SQL语句,完成对SQL语句的清洗,包括:
获取含有SQL代码的脚本文件,并寻找SQL代码的标志位;
利用标志位过滤脚本文件中的无关内容,保留得到规则化的SQL代码语句。
优选的,所述遍历有向无环图具有SQL子查询的图层,包括:从上到下遍历有向无环图具有SQL子查询的图层或从下到上遍历有向无环图具有SQL子查询的图层。
优选的,所述根据当前层的前一图层的字段,获取当前层中替代符对应的字段,包括:所述当前层的前一图层为字段层,所述字段层可根据子查询别名将对应字段映射至当前层的子查询中,并采用字段层的字段来替代当前层的替代符。
优选的,所述根据当前层的前一图层的字段,获取当前层中替代符对应的字段,包括:若当前层为遍历的第一层,则继续寻找没有替代符的图层,以最先出现的没有替代符的图层为字段层,以字段层的前一层为替代层,以根据字段层推断出替代层中的替代符对应的字段。
优选的,所述有向无环图中所有的替代符完成解析后,将所述解析结果上传至区块链中,以使得所述区块链对所述解析结果进行加密存储。
本发明还提供一种基于数据血缘的SQL语句解析***,所述SQL语句解析***包括:
数据集模块,用于获取有向无环图,所述有向无环图通过梳理SQL语句得到
遍历模块,用于遍历有向无环图具有SQL子查询的图层,获取出现替代符的图层,以遍历时最先出现替代符的图层为当前层;
替代模块,用于根据当前层的前一图层的字段,获取当前层中替代符对应的字段;所述替代模块继续获取所述遍历模块标记的剩下的出现替代符的图层,并进行替代符的替换,直到有向无环图中所有的替代符完成解析。
为实现上述目的,本发明还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如上所述SQL语句解析方法的步骤。
为实现上述目的,本发明还提供一种存储介质,存储有能够实现如上所述SQL语句解析方法的程序文件。
上述本发明提供了一种SQL语句解析方法、***、计算机设备和存储介质,其中,所述SQL语句解析方法获取有向无环图,所述有向无环图通过梳理SQL语句得到;遍历有向无环图具有SQL子查询的图层,获取出现替代符的图层,以遍历时最先出现替代符的图层为当前层;根据当前层的前一图层的字段,获取当前层中替代符对应的字段;继续获取剩下的出现替代符的图层,并进行替换,直到有向无环图中所有的替代符完成解析。由此,在基于SQL的数据血缘分析软件工具或***中采用所述SQL语句解析方法不必与数据库软件进行交互,也不必访问额外的元数据,便可实现数据血缘关系解析;此外,在数据安全要求较高的场景,通过该SQL语句解析方法可实现高内聚、低耦合的数据血缘解析功能,能减少外部依赖,同时不需要获取未在数据血缘关系中出现的其他元数据,可尽量保障用户元数据的安全性,不会因数据血缘解析而暴露未出现在相关SQL中的元数据信息。同时,本发明还涉及区块链技术。
附图说明
图1为一个实施例中提供的SQL语句解析方法的实施环境图;
图2为一个实施例中计算机设备的内部结构框图;
图3为一个实施例中SQL语句解析方法的流程图;
图4为一个实施例中有向无环图生成的流程图;
图5为一个实施例中SQL代码清洗的流程图;
图6为一个实施例中SQL嵌套查询结构的示意图;
图7为根据图6生成的有向无环图的示意图;
图8为一个实施例中有向无环图的示意图;
图9为一个实施例中实例1的有向无环图的示意图;
图10为一个实施例中实例2的有向无环图的示意图;
图11为一个实施例中实例3的有向无环图的示意图;
图12为一个实施例中SQL语句解析***的示意图;
图13为一个实施例中数据集模块的示意图;
图14为一个实施例中清洗模块的示意图;
图15为一个实施例中的计算机设备的结构示意图;
图16为一个实施例中的存储介质的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。
图1为一个实施例中提供的基于数据血缘的SQL语句解析方法的实施环境图,如图1所示,在该实施环境中,包括计算机设备110和显示设备120。
计算机设备110可以为用户使用的电脑等计算机设备,计算机设备110上安装有基于数据血缘的SQL语句解析***。当计算时,用户可以在计算机设备110依照基于数据血缘的SQL语句解析方法进行解析,并通过显示设备120显示解析结果。
需要说明的是,计算机设备110和显示设备120组合起来可以为智能手机、平板电脑、笔记本电脑、台式计算机等,但并不局限于此。
图2为一个实施例中计算机设备的内部结构示意图。如图2所示,该计算机设备包括通过***总线连接的处理器、非易失性存储介质、存储器和网络接口。其中,该计算机设备的非易失性存储介质存储有操作***、数据库和计算机可读指令,数据库中可存储有控件信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种基于数据血缘的SQL语句解析方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该计算机设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种基于数据血缘的SQL语句解析方法。该计算机设备的网络接口用于与终端连接通信。本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
如图3所示,在一个实施例中,提出了一种基于数据血缘的SQL语句解析方法,所述SQL语句解析方法可以应用于上述的计算机设备110和显示设备120中,具体可以包括以下步骤:
步骤31,获取有向无环图,所述有向无环图通过梳理SQL语句得到。
具体的,一个复杂的SQL可能由多个子SQL(查询语句)组成的,最基础、最原子的SQL可能由SQL关键字、字段、表、函数等基层元素组成,为了尽量完整记录SQL中各基础元素及其之间的关系,从而产生字段级别的映射关系。进一步的,请参考图4和图5,通过从含有SQL代码的脚本提取SQL语句,并通过梳理SQL语句可以得到有向无环图,具体的,包括:
S311、从含有SQL代码的脚本文件中提取得到规则化的SQL语句,完成对SQL语句的清洗;
进一步的,所述S311包括:
S3111、获取含有SQL代码的脚本文件,并寻找SQL代码的标志位;
优选的,脚本文件可为perl等脚本。
S3112、利用标志位过滤脚本文件中的无关内容,保留得到规则化的SQL代码语句。
S312、对规则化的SQL语句进行词法分析,生产抽象语法树,并根据抽象语法树生成有向无环图。
根据所述SQL语句解析方法,请参考图6,将具体举例说明如何通过SQL语句形成有向无环图的,即将SQL嵌套查询结构可转换为以下树形结构。
具体的,请参考图6,假设图6中SQL查询语句为S,S中包含字段为Cij(i,j∈N),包含来源表Ti(i∈N);其中Ci0表示S查询结果的第i个字段,Cij,(i∈N,j∈N*)表示S查询结果的第i个字段所引用的第j个字段;Ti表示S中出现的第i个来源表;当S中的来源表为子查询时使用不同下标的Si来表示。
根据图6来看,上图SQL查询语句为S0,S0的来源表为S1和S2,即S1来自T1,S2来自T2(T1和T2表示表别名),S0包括字段C00和C10,S1包括字段C01和字段C02,S2包括字段C11。进一步的,C00表示S0查询结果的第0个字段,C10表示S0查询结果的第1个字段;C01表示S1查询结果的第0个字段所引用的第1个字段,C02表示S1查询结果的第0个字段所引用的第2个字段,C11表示S2查询结果的第1个字段所引用的第1个字段;T1表示S1中出现的第1个来源表,T2表示S2中出现的第2个来源表;S0中的来源表为子查询时具有S1和S2两个子查询。
根据以上描述,可以看出,图6中SQL嵌套查询结构转为树形架构为三层,即生成的有向无环图具有三层,所述生成的有向无环图如图7所示。
在此需要说明的是,该SQL语句解析方法主要用于复杂SQL语句中存在“*”(全字段替代符号)的情况,根据上下层表和子查询中使用的字段名称进行双向推断,将“*”转换换为真实的字段引用。但是,所述SQL语句解析方法具有两种情况无法推断“*”所表示的字段,具体如下:
第一种情况,当SQL语句中所有查询字段都使用“*”替代,则无法进行推断。
例如以图8为例,如果S0是“*”,如果S1、S2和S3都是“*”,则无法进行推断。
第二种情况,当SQL语句中查询列出的字段未指定表的别名,同时,来源表或子查询有多个,且来源表或子查询之间是关联关系,并且同时至少二个子查询中字段都使用“*”表示,则无法准确推断“*”所代表的字段。
例如以图8为例,如果S0是“a+b+c”,如果S1是“*”,S2是“*”,S3显示c,那么S1和S2是无法被推断出来的。
同理,所述SQL语句解析方法也可以说是主要有三种情况可以推断出来,第一种情况是具有表别名,可根据映射关系进行推断;第二种情况是来源表或子查询之间是集合关系,可以根据映射关系进行推断;第三种情况是当SQL语句中查询列出的字段未指定表的别名,同时,来源表或子查询有多个,且来源表或子查询之间是关联关系,并且同时只有一个子查询中字段使用“*”,则可通过上下层和同层之间的关联性进行推断。
步骤32,遍历有向无环图具有SQL子查询的图层,获取出现替代符的图层,以遍历时最先出现替代符的图层为当前层。
具体的,由于有向无环图自身的缘故,可以从上到下遍历有向无环图具有SQL子查询的图层或从下到上遍历有向无环图具有SQL子查询的图层。
更具体的,假设有向无环图具有五层,其中第二层和第三层具有替代符,如果从上到下遍历所述有向无环图,则第二层为当前层,如果从下到上遍历所述有向无环图,则第三层为当前层。
步骤33,根据当前层的前一图层的字段,获取当前层中替代符对应的字段。
具体的,其中一实施例中,所述当前层的前一图层为字段层,所述字段层可根据子查询别名将对应字段映射至当前层的子查询中,并采用字段层的字段来替代当前层的替代符。
具体的,其中一实施例中,若当前层为遍历的第一层,则继续寻找没有替代符的图层,以最先出现的没有替代符的图层为字段层,以字段层的前一层为替代层,以根据字段层推断出替代层中的替代符对应的字段。
进一步的,如果同层存在多个子查询,且同层级的子查询之间如果是集合操作关系,则可以在同一层子查询之间进行字段映射,以获得替代符对应的字段。
需要额外说明的是,根据SQL语法规则,最终层一定不会是子查询而是表,不会出现字段或“*”的情况,在推断过程中可以不考虑最终层,具体可参考图8。
步骤34,继续获取剩下的出现替代符的图层,并进行替代符的替换,直到有向无环图中所有的替代符完成解析。
具体的,根据步骤32和步骤33,如果其他图层还存在替代符,均可通过上下层之间映射关系进行字段推断,直到所有替代符完成解析。
根据以上四个步骤,请继续参考图8,为一种树形结构,在本SQL语句解析方法中,可解决非“*”字段出现在查询语句的L0层(即最上层)、Lm层(即中间层)、Ln层(即最下层)时,向上下层推断“*”所代表的字段,并生成数据血缘关系结果,Ln+1为不包含子查询的最终层。
其中,请当非“*”字段Cij出现在L0时,可根据子查询别名将对应字段映射至下层的子查询中,当下层子查询中包含“*”时,使用字段Cij替代;当下层子查询中不包含字段Cij时,将字段Cij加入下层子查询的字段列表中,以此类推递归向下执行上述步骤。
具体的,请参考实例1,例如:
请参考图9,以上SQL语句转化成树形结构(有向无环图)如图9所示,其中,图9中的实线表示字段的依赖关系,虚线表示字段间的推断关系,根据以上SQL语句进行说明如下:
具体的,最顶层设为第0层,表示生成table0的数据查询,此查询中可得出Table0包含三个字段,分别是col3、col4、col5;根据第0层的表达式T1.col1+T2.col2 as col3可知,col3的数据来自T1.col1和T2.col2;col4的数据来自S1.col4,col5的数据来自S1.col5;下一层(第1层)由2张表和1个子查询组成,两张表分别是table1别名T1和table2别名T2,子查询别名S1;第1层中S1子查询所查询的字段是“*”,在第0层查找别名为S1的字段引用,在第0层中有S1.col4和S2.col5是引用S1子查询中的字段,则使用col4和col5替换S1子查询中的“*”,S1替换后为select col4,col5…;T3的下一层(第2层)是子查询S2,子查询S2中所查询的字段是“*”,所以在上一层中查找引用字段;因S1的来源表只有子查询S2,那么在S1中出现的所有字段都应来自子查询S2,所以S2中的“*”应使用T3出现的字段进行替换,S2替换后为select col4,col5 from table3。
其中,当中间层Lm的字段为非“*”时,若上一层查询中“*”带有表别名(如T3.*)则可根据表别名推断中间层中列出的字段是否为上一层“*”应该表示的字段;若上一层“*”无表别名标识,则确认当前查询是否为上层查询唯一的来源表,若是唯一来源表,则当前查询出现的字段为上一层“*”应该表示的字段;若不是唯一来源表,那么所有来源表(子查询)所列出的所有字段都是上一层“*”应该表示的字段。
具体的,请参考实例2,例如:
请参考图10,以上SQL语句转化成树形结构(有向无环图)如图10所示,根据SQL语句,根据S1中的col4可推断出table0中的‘*’应代表col4。
具体的,从SQL中可知,第0层table0的字段使用‘*’表示;第1层的子查询S1包含一个字段col4,因table0的下一层数据来源只有子查询S1,那么S1中的所有字段都应出现在上一层的查询中;使用第1层子查询S1的全部字段替代上层的‘*’,替换后第0层的查询应为select col4 from……。
其中,当多个查询间关系如S0,S1,S2的形式时,同层级的子查询之间如果是集合(union\intersect\minus)操作,则可以在同一层子查询之间进行字段映射。因集合操作要求字段名称和字段顺序完全相同,则可根据非“*”字段在同层级进行集合操作的子查询间进行字段引用映射,可根据S3中的字段推断出S2中应包含的字段,在使用S3和S2中的字段推断出table0中应包含的字段。
具体的,请参考实例3,例如:
请参考图11,UNION在SQL语句代表集合关系中,以上SQL语句转化成树形结构(有向无环图)如图11所示。
以上三种实例只是列举,进一步的,在实际应用中可能根据SQL复杂程度需要使用上述方式进行组合多次迭代才能将隐式字段引用关系完全列举。
在一个可选的实施方式中,还可以:将所述基于数据血缘的SQL语句解析方法的解析结果上传至区块链中。
具体地,基于所述基于数据血缘的SQL语句解析方法的解析结果得到对应的摘要信息,具体来说,摘要信息由所述基于数据血缘的SQL语句解析方法的解析结果进行散列处理得到,比如利用sha256s算法处理得到。将摘要信息上传至区块链可保证其安全性和对用户的公正透明性。用户可以从区块链中下载得该摘要信息,以便查证所述基于数据血缘的SQL语句解析方法的解析结果是否被篡改。本示例所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
本发明提供了一种基于数据血缘的SQL语句解析方法,通过获取有向无环图,所述有向无环图通过梳理SQL语句得到;遍历有向无环图具有SQL子查询的图层,获取出现替代符的图层,以遍历时最先出现替代符的图层为当前层;根据当前层的前一图层的字段,获取当前层中替代符对应的字段;继续获取剩下的出现替代符的图层,并进行替换,直到有向无环图中所有的替代符完成解析。由此,在基于SQL的数据血缘分析软件工具或***中采用所述SQL语句解析方法不必与数据库软件进行交互,也不必访问额外的元数据,便可实现数据血缘关系解析;此外,在数据安全要求较高的场景,通过该SQL语句解析方法可实现高内聚、低耦合的数据血缘解析功能,能减少外部依赖,同时不需要获取未在数据血缘关系中出现的其他元数据,可尽量保障用户元数据的安全性,不会因数据血缘解析而暴露未出现在相关SQL中的元数据信息。同时,本发明还涉及区块链技术。
如图12所示,本发明还提供了一种基于数据血缘的SQL语句解析***,该SQL语句解析***可以集成于上述的计算机设备110中,具体可以包括数据集模块20、遍历模块30以及替代模块40。
所述数据集模块20,用于获取有向无环图,所述有向无环图通过梳理SQL语句得到;
所述遍历模块30,用于遍历有向无环图具有SQL子查询的图层,获取出现替代符的图层,以遍历时最先出现替代符的图层为当前层;
所述替代模块40,用于根据当前层的前一图层的字段,获取当前层中替代符对应的字段;所述替代模块继续获取所述遍历模块标记的剩下的出现替代符的图层,并进行替代符的替换,直到有向无环图中所有的替代符完成解析。
在一个实施例中,请参考图13,所述数据集模块20包括清洗模块21和生成模块22。其中,所述清洗模块21从含有SQL代码的脚本文件中提取得到规则化的SQL语句,完成对SQL语句的清洗;所述生成模块22用于对规则化的SQL语句进行词法分析,生产抽象语法树,并可根据抽象语法树生成有向无环图。
在一个实施例中,请参考图14,所述清洗模块21包括寻找模块211和规则模块212。其中,所述寻找模块211用于获取含有SQL代码的脚本文件,并寻找SQL代码的标志位;所述规则模块212用于利用标志位过滤脚本文件中的无关内容,保留得到规则化的SQL代码语句。
在一个实施例中,所述遍历模块30进一步实现:从上到下遍历有向无环图具有SQL子查询的图层或从下到上遍历有向无环图具有SQL子查询的图层。
在一个实施例中,所述替代模块40进一步实现:若所述当前层的前一图层为字段层,则所述字段层可根据子查询别名将对应字段映射至当前层的子查询中,并采用字段层的字段来替代当前层的替代符。
在一个实施例中,所述替代模块40进一步实现:若当前层为遍历的第一层,则继续寻找没有替代符的图层,以最先出现的没有替代符的图层为字段层,以字段层的前一层为替代层,以根据字段层推断出替代层中的替代符对应的字段。
在一个实施例中,所述计算***还包括显示模块(未图示),用于显示计算结果,所述显示模块可以是台式电脑的显示器,也可以是其他计算机设备的显示装置。
请参考图15,图15为本发明实施例的设备的结构示意图。如图15所示,该设备200包括处理器201及和处理器201耦接的存储器202。
存储器202存储有用于实现上述任一实施例所述基于数据血缘的SQL语句解析方法的程序指令。
处理器201用于执行存储器202存储的程序指令。
其中,处理器201还可以称为CPU(Central Processing Unit,中央处理单元)。处理器201可能是一种集成电路芯片,具有信号的处理能力。处理器201还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
参阅图16,图16为本发明实施例的存储介质的结构示意图。本发明实施例的存储介质存储有能够实现上述所有方法的程序文件301,其中,该程序文件301可以以软件产品的形式存储在上述存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
Claims (10)
1.一种基于数据血缘的SQL语句解析方法,其特征在于,所述SQL语句解析方法包括:
步骤一、获取有向无环图,所述有向无环图通过梳理SQL语句得到;
步骤二、遍历有向无环图具有SQL子查询的图层,获取出现替代符的图层,以遍历时最先出现替代符的图层为当前层;
步骤三、根据当前层的前一图层的字段,获取当前层中替代符对应的字段;
步骤四、继续获取剩下的出现替代符的图层,并进行替代符的替换,直到有向无环图中所有的替代符完成解析。
2.如权利要求1所述的SQL语句解析方法,其特征在于,所述有向无环图通过梳理SQL语句得到,包括:
从含有SQL代码的脚本文件中提取得到规则化的SQL语句,完成对SQL语句的清洗;
对规则化的SQL语句进行词法分析,生成抽象语法树,并根据抽象语法树生成有向无环图。
3.如权利要求2所述的SQL语句解析方法,其特征在于,所述从含有SQL代码的脚本文件中提取得到规则化的SQL语句,完成对SQL语句的清洗,包括:
获取含有SQL代码的脚本文件,并寻找SQL代码的标志位;
利用标志位过滤脚本文件中的无关内容,保留得到规则化的SQL代码语句。
4.如权利要求1所述的SQL语句解析方法,其特征在于,所述遍历有向无环图具有SQL子查询的图层,包括:从上到下遍历有向无环图具有SQL子查询的图层或从下到上遍历有向无环图具有SQL子查询的图层。
5.如权利要求1所述的SQL语句解析方法,其特征在于,所述根据当前层的前一图层的字段,获取当前层中替代符对应的字段,包括:所述当前层的前一图层为字段层,所述字段层可根据子查询别名将对应字段映射至当前层的子查询中,并采用字段层的字段来替代当前层的替代符。
6.如权利要求1所述的SQL语句解析方法,其特征在于,所述根据当前层的前一图层的字段,获取当前层中替代符对应的字段,包括:若当前层为遍历的第一层,则继续寻找没有替代符的图层,以最先出现的没有替代符的图层为字段层,以字段层的前一层为替代层,以根据字段层推断出替代层中的替代符对应的字段。
7.如权利要求1所述的SQL语句解析方法,其特征在于,所述有向无环图中所有的替代符完成解析后,将所述解析结果上传至区块链中,以使得所述区块链对所述解析结果进行加密存储。
8.一种基于数据血缘的SQL语句解析***,其特征在于,所述SQL语句解析***包括:
数据集模块,用于获取有向无环图,所述有向无环图通过梳理SQL语句得到;
遍历模块,用于遍历有向无环图具有SQL子查询的图层,获取出现替代符的图层,以遍历时最先出现替代符的图层为当前层;
替代模块,用于根据当前层的前一图层的字段,获取当前层中替代符对应的字段;所述替代模块继续获取所述遍历模块标记的剩下的出现替代符的图层,并进行替代符的替换,直到有向无环图中所有的替代符完成解析。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项权利要求所述SQL语句解析方法的步骤。
10.一种存储介质,其特征在于,存储有能够实现如权利要求1-7中任一项所述SQL语句解析方法的程序文件。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011134553.8A CN112256721B (zh) | 2020-10-21 | 2020-10-21 | Sql语句解析方法、***、计算机设备和存储介质 |
PCT/CN2020/135735 WO2021179722A1 (zh) | 2020-10-21 | 2020-12-11 | Sql语句解析方法、***、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011134553.8A CN112256721B (zh) | 2020-10-21 | 2020-10-21 | Sql语句解析方法、***、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112256721A true CN112256721A (zh) | 2021-01-22 |
CN112256721B CN112256721B (zh) | 2021-08-17 |
Family
ID=74264521
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011134553.8A Active CN112256721B (zh) | 2020-10-21 | 2020-10-21 | Sql语句解析方法、***、计算机设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112256721B (zh) |
WO (1) | WO2021179722A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115080599A (zh) * | 2022-07-25 | 2022-09-20 | 成都烽顺科技有限公司 | 一种数据库查询sql字段血缘关系生成方法 |
CN115563150A (zh) * | 2022-12-02 | 2023-01-03 | 浙江大华技术股份有限公司 | Hive SQL与执行引擎DAG的映射方法、设备及存储介质 |
CN116303370A (zh) * | 2023-05-17 | 2023-06-23 | 建信金融科技有限责任公司 | 一种脚本血缘解析方法、装置、存储介质、设备及产品 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113868253B (zh) * | 2021-09-28 | 2024-04-23 | 中通服创立信息科技有限责任公司 | 一种数据关系捕获及大数据关系树构建方法 |
CN114911785A (zh) * | 2022-05-16 | 2022-08-16 | 北京航空航天大学 | 一种数据血缘管理方法、装置及电子设备 |
CN115237936B (zh) * | 2022-09-14 | 2024-04-05 | 北京海致星图科技有限公司 | 检测sql语句中字段的方法、装置、存储介质和设备 |
CN115544065B (zh) * | 2022-11-28 | 2023-02-28 | 北京数语科技有限公司 | 一种数据血缘发现方法、***、设备及存储介质 |
CN116541887B (zh) * | 2023-07-07 | 2023-09-15 | 云启智慧科技有限公司 | 一种大数据平台数据安全保护方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109033109A (zh) * | 2017-06-09 | 2018-12-18 | 杭州海康威视数字技术股份有限公司 | 数据处理方法及*** |
CN109325078A (zh) * | 2018-09-18 | 2019-02-12 | 拉扎斯网络科技(上海)有限公司 | 基于结构数据的数据血缘确定方法及装置 |
CN109582660A (zh) * | 2018-12-06 | 2019-04-05 | 深圳前海微众银行股份有限公司 | 数据血缘分析方法、装置、设备、***及可读存储介质 |
CN111125758A (zh) * | 2019-12-19 | 2020-05-08 | 北京安华金和科技有限公司 | 一种基于全语法树解析的动态脱敏方法 |
US20200257716A1 (en) * | 2011-10-05 | 2020-08-13 | Cumulus Systems Inc. | System for organizing and fast searching of massive amounts of data |
CN111538743A (zh) * | 2020-04-22 | 2020-08-14 | 电子科技大学 | 基于sql的数据血缘关系分析方法以及*** |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186541B (zh) * | 2011-12-27 | 2016-08-24 | 阿里巴巴集团控股有限公司 | 一种映射关系生成方法及装置 |
CN107239458B (zh) * | 2016-03-28 | 2021-01-29 | 阿里巴巴集团控股有限公司 | 基于大数据推算开发对象关系的方法及装置 |
-
2020
- 2020-10-21 CN CN202011134553.8A patent/CN112256721B/zh active Active
- 2020-12-11 WO PCT/CN2020/135735 patent/WO2021179722A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200257716A1 (en) * | 2011-10-05 | 2020-08-13 | Cumulus Systems Inc. | System for organizing and fast searching of massive amounts of data |
US20200301956A1 (en) * | 2011-10-05 | 2020-09-24 | Cumulus Systems Inc. | System for organizing and fast searching of massive amounts of data |
CN109033109A (zh) * | 2017-06-09 | 2018-12-18 | 杭州海康威视数字技术股份有限公司 | 数据处理方法及*** |
CN109325078A (zh) * | 2018-09-18 | 2019-02-12 | 拉扎斯网络科技(上海)有限公司 | 基于结构数据的数据血缘确定方法及装置 |
CN109582660A (zh) * | 2018-12-06 | 2019-04-05 | 深圳前海微众银行股份有限公司 | 数据血缘分析方法、装置、设备、***及可读存储介质 |
CN111125758A (zh) * | 2019-12-19 | 2020-05-08 | 北京安华金和科技有限公司 | 一种基于全语法树解析的动态脱敏方法 |
CN111538743A (zh) * | 2020-04-22 | 2020-08-14 | 电子科技大学 | 基于sql的数据血缘关系分析方法以及*** |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115080599A (zh) * | 2022-07-25 | 2022-09-20 | 成都烽顺科技有限公司 | 一种数据库查询sql字段血缘关系生成方法 |
CN115080599B (zh) * | 2022-07-25 | 2022-11-25 | 成都烽顺科技有限公司 | 一种数据库查询sql字段血缘关系生成方法 |
CN115563150A (zh) * | 2022-12-02 | 2023-01-03 | 浙江大华技术股份有限公司 | Hive SQL与执行引擎DAG的映射方法、设备及存储介质 |
CN116303370A (zh) * | 2023-05-17 | 2023-06-23 | 建信金融科技有限责任公司 | 一种脚本血缘解析方法、装置、存储介质、设备及产品 |
CN116303370B (zh) * | 2023-05-17 | 2023-08-15 | 建信金融科技有限责任公司 | 一种脚本血缘解析方法、装置、存储介质、设备及产品 |
Also Published As
Publication number | Publication date |
---|---|
WO2021179722A1 (zh) | 2021-09-16 |
CN112256721B (zh) | 2021-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112256721B (zh) | Sql语句解析方法、***、计算机设备和存储介质 | |
US9965641B2 (en) | Policy-based data-centric access control in a sorted, distributed key-value data store | |
US20140365527A1 (en) | Secure access to hierarchical documents in a sorted, distributed key/value data store | |
US7672971B2 (en) | Modular architecture for entity normalization | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
JP5152877B2 (ja) | 文書ベースシステムにおける文書データ記憶方法およびその装置 | |
CA2873210A1 (en) | Clustered information processing and searching with structured-unstructured database bridge | |
TW200903324A (en) | Systems and methods for modeling partitioned tables as logical indexes | |
US20230267116A1 (en) | Translation of tenant identifiers | |
JP6440542B2 (ja) | 大量の複雑な構造化データを管理するための知識エンジン | |
CN111061828A (zh) | 一种数字图书馆知识检索方法及装置 | |
CN116034349A (zh) | 列式分析存储格式的半结构化数据的概率文本索引 | |
CN110990406A (zh) | 一种模糊查询方法、装置、设备和介质 | |
CN113407565B (zh) | 跨库数据查询方法、装置和设备 | |
US20230153455A1 (en) | Query-based database redaction | |
CN113377876A (zh) | 基于Domino平台的数据分库处理方法、装置及平台 | |
US11442973B2 (en) | System and method for storing and querying document collections | |
US8498987B1 (en) | Snippet search | |
KR101828466B1 (ko) | 파일시스템을 기반으로 하는 저장장치에서 객체기반 스토리지 인터페이스를 제공하는 방법 및 장치 | |
CN114238334A (zh) | 异构数据编码、解码方法和装置、计算机设备和存储介质 | |
CN111881220A (zh) | 列表存储下的数据操作方法、装置、电子设备和存储介质 | |
CN110471901B (zh) | 数据导入方法及终端设备 | |
US20240169088A1 (en) | Systems and methods for providing searchable access to documents across separate document repositories | |
CN117332400A (zh) | 用户权限检查方法、装置、电子设备及可读存储介质 | |
WO2017131753A1 (en) | Text search of database with one-pass indexing including filtering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |