本公开涉及数据库,尤其是对一种基于词法分析的数据库脚本语法转换的方法和装置。
背景技术:
1、国产化数据库具有重要战略意义,它在保护数据安全、提升技术实力、促进本土经济发展和增强国际竞争力等方面发挥着关键作用,因此,推动数据库国产化是我们面临的一项重要而艰巨的任务。
2、不同数据库拥有不同的语法规则,尽管国产化数据库在设计上能够兼容某些mysql的语法,但仍然存在较多与之不同的语法或规则限制。因此,在数据库国产化过程中,数据库语法适配工作是不可忽视的一环。
3、在企业级应用中,通常会涉及大量的数据库脚本,每个脚本中又包含许多数据库语句。这些数据库语句在功能单元建造时经过精心设计并发布。然而,在数据库国产化的演化过程中,我们往往无法耗费大量的人工成本和时间成本重新对已有的数据库语句进行翻译、改写甚至逐一验证。
4、具体来讲,目前真正把sql解析技术用于数据库维护的产品非常有限,虽然少部分国产数据库考虑到用户数据迁移的难点,开发了兼容mysql的迁移工具,但是,这些迁移工具总是假定目标环境中已存在mysql设施及完善的表、视图、索引等结构,并以此为基础进行设施的迁移。所以,在全新独立环境中,如果没有基础的mysql并且需要以国产数据库为基础设施,那么仅凭这些迁移工具是无法满足创建全新表、视图、索引和插入基础策略数据的需求。
5、因此,我们迫切需要一种方法或者技术,能够将现有的mysql脚本翻译转储成符合国产数据库语法脚本。
技术实现思路
1、为了解决上述技术问题,提出了本公开的实施例提供了一种基于词法分析的数据库脚本语法转换的方法和装置。
2、根据本公开实施例的一个方面,提供了一种基于词法分析的数据库脚本语法转换的方法,所述方法包括:
3、从待转换的数据库脚本中获取目标sql语句,所述数据库脚本为目标sql语句集合,所述目标sql语句是待进行语法转换的sql语句,且目标sql语句至少包括数据库建表语句、数据插入语句和数据替换语句三种语句类型之一;
4、对所述目标sql语句进行词法分析,确定所述目标sql语句中的每个词元素token,并进行分类且标记,所述词元素token的分类包括关键字、标识符、文本、函数、特殊符号、数值、格式化占位符;
5、对所述目标sql语句中的每个词元素token进行语法分析,确定所述目标sql语句的语法结构和语法关系;
6、基于所述目标sql语句的语法结构和语法关系进行语法转换,以得到目标语法的sql语句。
7、根据本公开实施例的另一个方面,提供了一种基于词法分析的数据库脚本语法转换的装置,所述装置包括:
8、sql语句截取模块,用于从待转换的数据库脚本中获取目标sql语句,所述数据库脚本为目标sql语句集合,所述目标sql语句是待进行语法转换的sql语句,且目标sql语句至少包括数据库建表语句、数据插入语句和数据替换语句三种语句类型之一;
9、词法分析模块,用于对所述目标sql语句进行词法分析,确定所述目标sql语句中的每个词元素token进行分类且标记,所述词元素token的分类包括关键字、标识符、文本、函数、特殊符号、数值、格式化占位符 ;
10、语法分析模块,用于对所述目标sql语句中的每个词元素token进行语法分析,确定所述目标sql语句的语法结构和语法关系;
11、语法改写模块,用于按照各语句类型对应的预设的语法转换规则对分类标记后的所述目标sql语句进行语法转换,以得到目标语法的sql语句。
12、根据本公开实施例还提供了一种电子设备,所述电子设备包括:
13、处理器;
14、用于存储所述处理器可执行指令的存储器;
15、所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述一种基于词法分析的数据库脚本语法转换的方法。
16、基于本公开上述实施例提供的技术方案,从待转换的数据库脚本中获取目标sql语句,所述目标sql语句是待进行语法转换的sql语句,且目标sql语句至少包括数据库建表语句、数据插入语句和数据替换语句三种语句类型之一;对所述目标sql语句中的每个词元素token进行分类且标记,所述词元素token的分类包括关键字、标识符、文本、函数、特殊符号、数值、格式化占位符 ;按照各语句类型对应的预设的语法转换规则对分类标记后的所述目标sql语句进行语法转换,以得到目标语法的sql语句。可以将基于mysql语法的数据库脚本转换为适用于多种国产数据库语法的脚本,降低了人工翻译、改写、校对和操作所需的人力成本和时间成本,提高转换效率,并确保转换的准确性和一致性。
17、下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
1.一种基于词法分析的数据库脚本语法转换的方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述对所述目标sql语句中的每个词元素token进行语法分析,确定所述目标sql语句的语法结构和语法关系,包括:
3.根据权利要求2所述的方法,其特征在于,所述基于所述目标sql语句的语法结构和语法关系进行语法转换,以得到目标语法的sql语句,包括:
4.根据权利要求3所述的方法,其特征在于,所述按照所述语法结构对应的预设语法转换规则,对所述目标sql语句进行转换,包括:
5.根据权利要求3所述的方法,其特征在于,所述按照所述语法结构对应的预设语法转换规则,对所述目标sql语句进行转换,包括:
6.根据权利要求2-5任一项所述的方法,其特征在于,所述基于所述目标sql语句的语法结构和语法关系进行语法转换,以得到目标语法的sql语句,包括:
7.根据权利要求1所述的方法,其特征在于,所述从待转换的数据库脚本中获取目标sql语句,包括:
8.根据权利要求7所述的方法,其特征在于,所述从状态机接收待转换的数据库脚本,以获取所述目标sql语句,包括:
9.根据权利要求1所述的方法,其特征在于,所述对所述目标sql语句进行词法分析,确定所述目标sql语句中的每个词元素token,并进行分类且标记,包括:
10.一种基于词法分析的数据库脚本语法转换的装置,其特征在于,所述装置包括: