CN114489678A - 处理数据库脚本的方法、装置、存储介质和设备 - Google Patents
处理数据库脚本的方法、装置、存储介质和设备 Download PDFInfo
- Publication number
- CN114489678A CN114489678A CN202210143384.7A CN202210143384A CN114489678A CN 114489678 A CN114489678 A CN 114489678A CN 202210143384 A CN202210143384 A CN 202210143384A CN 114489678 A CN114489678 A CN 114489678A
- Authority
- CN
- China
- Prior art keywords
- database
- script
- compiling
- scripts
- sequence
- 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.)
- Pending
Links
- 238000013515 script Methods 0.000 title claims abstract description 368
- 238000000034 method Methods 0.000 title claims abstract description 44
- 230000014509 gene expression Effects 0.000 claims description 8
- 238000012163 sequencing technique Methods 0.000 claims description 5
- 238000000605 extraction Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 4
- 238000012356 Product development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种处理数据库脚本的方法、装置、存储介质和设备,可应用于大数据领域,该方法为:从数据库源信息中提取各个数据库脚本;基于各个数据库表的逻辑主键,确定各个数据库脚本之间的依赖关系;基于各个数据库脚本之间的依赖关系,确定各个数据库脚本的编译顺序;部署与数据库类型对应的运行环境;按照各个数据库脚本的编译顺序,在运行环境下依次对各个数据库脚本进行编译,得到各个数据库脚本的编译结果;在各个编译结果均指示正确的情况下,通过预设前端界面提示用户数据库脚本编排工作完成。相较于现有技术,该方法无需人工参与数据库脚本的编排工作,便能够实现对数据库脚本的有效编排,让编排效率得到显著提高。
Description
技术领域
本申请涉及大数据领域,尤其涉及一种处理数据库脚本的方法、装置、存储介质和设备。
背景技术
当前企业中数据库种类繁多,大型企业的业务系统所使用的数据库,可能会有十多种、或者几十种。在各类业务系统的每个产品开发环节中,都会新开发多个数据库脚本,为此,在每个开发环节结束后,都需要对当前现有的各个数据库脚本进行编排(主要为制定各个数据库脚本的编译顺序)。
目前,数据库脚本的编排工作一般都是由人工执行的。海量的数据库脚本带来了庞大的工作量,且受限于人力成本以及人为误差的影响,编排工作所需的时间将会大大延长,从而影响数据库的正常使用。
发明内容
本申请提供了一种处理数据库脚本的方法、装置、存储介质和设备,目的在于提高数据库脚本的编排效率。
为了实现上述目的,本申请提供了以下技术方案:
一种处理数据库脚本的方法,包括:
获取数据库的数据库类型、各个数据库表的逻辑主键、数据库源信息;
从所述数据库源信息中提取各个数据库脚本;
基于各个所述数据库表的逻辑主键,确定各个所述数据库脚本之间的依赖关系;
基于各个所述数据库脚本之间的依赖关系,确定各个所述数据库脚本的编译顺序;
部署与所述数据库类型对应的运行环境;
在接收到用户发送的编译指令后,按照各个所述数据库脚本的编译顺序,在所述运行环境下依次对各个所述数据库脚本进行编译,得到各个所述数据库脚本的编译结果;
在各个所述编译结果均指示正确的情况下,通过预设前端界面向用户展示各个所述数据库脚本的编译顺序,并提示所述用户数据库脚本编排工作完成。
可选的,所述从所述数据库源信息中提取各个数据库脚本,包括:
从预设的版本管理工具库中,获取与所述数据库类型对应的版本管理工具;
运行所述版本管理工具,以使所述版本管理工具从所述数据库源信息中,获取与所述版本管理工具所包含的正则表达式匹配的字符串;
将获取得到的各个所述字符串,均标识为数据库脚本。
可选的,所述基于各个所述数据库表的逻辑主键,确定各个所述数据库脚本之间的依赖关系,包括:
对各个所述数据库脚本进行解析,得到各个所述数据库脚本的脚本类型,以及各个所述数据库表脚本所包含的数据库表;
对各个所述数据库表的逻辑主键进行解析,得到各个所述数据库表之间的依赖关系;
基于各个所述数据表之间的依赖关系,以及各个所述数据库脚本所包含的数据库表,生成各个所述数据库脚本之间的依赖关系。
可选的,所述基于各个所述数据库脚本之间的依赖关系,确定各个所述数据库脚本的编译顺序,包括:
预先对各个所述数据库脚本进行解析,得到各个所述数据库脚本的脚本类型;
按照各个所述数据库脚本之间的依赖关系,对各个所述数据库脚本进行排序,得到脚本序列;其中,若第一脚本被第二脚本依赖,则所述第一脚本在所述脚本序列中的序位,排在所述第二脚本的序位之前;
对于相互之间不存在依赖关系的多个数据库脚本,按照所述脚本类型的预设优先级从高到低的顺序,调整多个所述数据库脚本在所述脚本序列中的序位,以使所述脚本类型的预设优先级较高的数据库脚本的序位,排在所述脚本类型的预设优先级较低的数据库脚本的序位之前;
将所述脚本序列中各个数据库脚本的序位,标识为各个所述数据库脚本的编译顺序。
可选的,所述部署与所述数据库类型对应的运行环境之后,还包括:
在所述运行环境中保存各个所述数据库脚本的备份脚本。
可选的,所述在接收到用户发送的编译指令后,按照各个所述数据库脚本的编译顺序,在所述运行环境下依次对各个所述数据库脚本进行编译,得到各个所述数据库脚本的编译结果之后,还包括:
在任意一个所述数据库脚本的编译结果为错误的情况下,通过所述预设前端界面向所述用户展示编译结果为错误的数据库脚本。
可选的,还包括:
在接收到所述用户发送的回退指令后,执行预设步骤,得到各个新的数据库脚本,以及各个新的数据库脚本的编译顺序;
其中,所述预设步骤包括:从所述数据库源信息中提取各个新的数据库脚本;基于各个所述数据库表的逻辑主键,确定各个新的所述数据库脚本之间的依赖关系;基于各个新的所述数据库脚本之间的依赖关系,确定各个新的所述数据库脚本的编译顺序。
一种处理数据库脚本的装置,包括:
数据获取单元,用于获取数据库的数据库类型、各个数据库表的逻辑主键、数据库源信息;
脚本提取单元,用于从所述数据库源信息中提取各个数据库脚本;
关系确定单元,用于基于各个所述数据库表的逻辑主键,确定各个所述数据库脚本之间的依赖关系;
顺序确定单元,用于基于各个所述数据库脚本之间的依赖关系,确定各个所述数据库脚本的编译顺序;
环境部署单元,用于部署与所述数据库类型对应的运行环境;
脚本编译单元,用于在接收到用户发送的编译指令后,按照各个所述数据库脚本的编译顺序,在所述运行环境下依次对各个所述数据库脚本进行编译,得到各个所述数据库脚本的编译结果;
展示单元,用于在各个所述编译结果均指示正确的情况下,通过预设前端界面向用户展示各个所述数据库脚本的编译顺序,并提示所述用户数据库脚本编排工作完成。
一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,所述程序执行所述的处理数据库脚本的方法。
一种处理数据库脚本的设备,包括:处理器、存储器和总线;所述处理器与所述存储器通过所述总线连接;
所述存储器用于存储程序,所述处理器用于运行程序,其中,所述程序运行时执行所述的处理数据库脚本的方法。
本申请提供的技术方案,获取数据库的数据库类型、各个数据库表的逻辑主键、数据库源信息。从数据库源信息中提取各个数据库脚本。基于各个数据库表的逻辑主键,确定各个数据库脚本之间的依赖关系。基于各个数据库脚本之间的依赖关系,确定各个数据库脚本的编译顺序。部署与数据库类型对应的运行环境。在接收到用户发送的编译指令后,按照各个数据库脚本的编译顺序,在运行环境下依次对各个数据库脚本进行编译,得到各个数据库脚本的编译结果。在各个编译结果均指示正确的情况下,通过预设前端界面向用户展示各个数据库脚本的编译顺序,并提示用户数据库脚本编排工作完成。相较于现有技术,本申请无需人工参与数据库脚本的编排工作,便能够实现对数据库脚本的有效编排,不仅让编排效率得到显著提高,还降低了人力成本。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种处理数据库脚本的方法的流程示意图;
图2为本申请实施例提供的另一种处理数据库脚本的方法的流程示意图;
图3为本申请实施例提供的一种处理数据库脚本的装置的架构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1所示,为本申请实施例提供的一种处理数据库脚本的方法的流程示意图,包括如下步骤:
S101:对于产品开发环节中所涉及的每个数据库,预先获取数据库的数据库类型、各个数据库表的逻辑主键、数据库源信息。
其中,数据库类型包括但不限于为:ORACLE,MYSQL,PG,GBASE,HIVE等。数据库表用于储存数据对象的集合。数据库源信息,其实质就是数据库的底层逻辑。
需要说明的是,获取数据库的数据库类型、数据库表、数据库源信息的渠道,包括但不限于为:通过访问业务系统获得数据库的数据库类型、各个数据库表的逻辑主键、数据库源信息,或者,由用户手动输入数据库的数据库类型、各个数据库表的逻辑主键、数据库源信息等。
S102:从预设的版本管理工具库中,获取与数据库类型对应的版本管理工具。
其中,版本管理工具库包括多个数据库类型,以及与每个数据库类型对应的版本管理工具。一般而言,每个版本管理工具均包括多个正则表达式,且各个版本管理工具各自所拥有的正则表达式并不完全相同,具体的,版本管理工具包括但不限于为:git,svn以及clearCase等工具。
S103:运行版本管理工具,以使版本管理工具从数据库源信息中,获取与版本管理工具所包含的正则表达式匹配的字符串。
其中,版本管理工具的作用,实质就是:从数据库源信息中,获取与自身所包含的正则表达式匹配的字符串。
S104:将获取得到的各个字符串,均标识为数据库脚本。
S105:对各个数据库脚本进行解析,得到各个数据库脚本的脚本类型,以及各个数据库表脚本所包含的数据库表。
其中,脚本类型包括但不限于为:DDL、DML、函数、存储过程、数据库包等类型。
S106:对各个数据库表的逻辑主键进行解析,得到各个数据库表之间的依赖关系。
S107:基于各个数据表之间的依赖关系,以及各个数据库脚本所包含的数据库表,生成各个数据库脚本之间的依赖关系。
S108:按照各个数据库脚本之间的依赖关系,对各个数据库脚本进行排序,得到脚本序列。
其中,若第一脚本被第二脚本依赖,则第一脚本在脚本序列中的序位,排在第二脚本的序位之前。
S109:对于相互之间不存在依赖关系的多个数据库脚本,按照脚本类型的预设优先级从高到低的顺序,调整多个数据库脚本在脚本序列中的序位,以使脚本类型的预设优先级较高的数据库脚本的序位,排在脚本类型的预设优先级较低的数据库脚本的序位之前。
其中,DDL的优先级高于DML的优先级,DML的优先级高于函数的优先级,函数的优先级高于存储过程的优先级,存储过程的优先级高于数据库包的优先级。
需要说明的是,用户也还可以通过预设前端界面,对脚本序列中任意一个或多个数据库脚本的序位进行调整,或者,删除脚本序列中的任意一个或多个数据库脚本。
S110:将脚本序列中各个数据库脚本的序位,标识为各个数据库脚本的编译顺序。
S111:部署与数据库类型对应的运行环境,并在运行环境中保存各个数据库脚本的备份脚本。
S112:在接收到用户发送的编译指令后,按照各个数据库脚本的编译顺序,在运行环境下依次对各个数据库脚本进行编译,得到各个数据库脚本的编译结果。
S113:在各个编译结果均指示正确的情况下,通过预设前端界面向用户展示各个数据库脚本的编译顺序,并提示用户数据库脚本编排工作完成。
S114:在任意一个数据库脚本的编译结果为错误的情况下,通过预设前端界面向用户展示编译结果为错误的数据库脚本。
S115:在接收到用户发送的回退指令后,执行预设步骤,得到各个新的数据库脚本,以及各个新的数据库脚本的编译顺序。
其中,预设步骤包括:从数据库源信息中提取各个新的数据库脚本;基于各个数据库表的逻辑主键,确定各个新的数据库脚本之间的依赖关系;基于各个新的数据库脚本之间的依赖关系,确定各个新的数据库脚本的编译顺序。
基于上述S101-S115所示的流程,本实施例能够实现以下有益效果:
1、支持多产品多类型数据库脚本的智能化管理,故不同产品都可以在本平台上进行数据库脚本的管理与维护。
2、支持数据库脚本的编译执行顺序的自动编排,故可大幅减少多人并发项目下导致的脚本编译执行错误。
3、提供数据库脚本的备份,可自动生成多种脚本语句的备份任务,大大减少人工生成备份脚本的时间,提高备份脚本生成质量,减少全量备份带来的空间浪费和时间消耗过多问题。
综上所述,相较于现有技术,无需人工参与数据库脚本的编排工作,便能够实现对数据库脚本的有效编排,不仅让编排效率得到显著提高,还降低了人力成本。
需要说明的是,上述实施例提及的S114,为本申请所示处理数据库脚本的方法的一种可选的实现方式。此外,上述实施例提及的S115,也为本申请所示处理数据库脚本的方法的一种可选的实现方式。为此,上述实施例所示的流程,可以概括为图2所示的方法。
如图2所示,为本申请实施例提供的另一种处理数据库脚本的方法的流程示意图,包括如下步骤:
S201:获取数据库的数据库类型、各个数据库表的逻辑主键、数据库源信息。
S202:从数据库源信息中提取各个数据库脚本。
S203:基于各个数据库表的逻辑主键,确定各个数据库脚本之间的依赖关系。
S204:基于各个数据库脚本之间的依赖关系,确定各个数据库脚本的编译顺序。
S205:部署与数据库类型对应的运行环境。
S206:在接收到用户发送的编译指令后,按照各个数据库脚本的编译顺序,在运行环境下依次对各个数据库脚本进行编译,得到各个数据库脚本的编译结果。
S207:在各个编译结果均指示正确的情况下,通过预设前端界面向用户展示各个数据库脚本的编译顺序,并提示用户数据库脚本编排工作完成。
综上所述,相较于现有技术,无需人工参与数据库脚本的编排工作,便能够实现对数据库脚本的有效编排,不仅让编排效率得到显著提高,还降低了人力成本。
需要说明的是,本发明提供的处理数据库脚本的方法,可用于大数据领域。上述实施例仅为示例,并不对本发明提供的处理数据库脚本的方法的应用领域进行限定。
本发明提供的处理数据库脚本的方法可用于金融领域或其他领域,例如,可用于金融领域中的数据库管理场景。其他领域为除金融领域之外的任意领域,例如网络安全领域。上述仅为示例,并不对本发明提供的处理数据库脚本的方法的应用领域进行限定。
与上述本申请实施例提供的处理数据库脚本的方法相对应,本申请实施例还提供了一种处理数据库脚本的装置。
如图3所示,为本申请实施例提供的一种处理数据库脚本的装置的架构示意图,包括:
数据获取单元100,用于获取数据库的数据库类型、各个数据库表的逻辑主键、数据库源信息。
脚本提取单元200,用于从数据库源信息中提取各个数据库脚本。
其中,脚本提取单元200具体用于:从预设的版本管理工具库中,获取与数据库类型对应的版本管理工具;运行版本管理工具,以使版本管理工具从数据库源信息中,获取与版本管理工具所包含的正则表达式匹配的字符串;将获取得到的各个字符串,均标识为数据库脚本。
关系确定单元300,用于基于各个数据库表的逻辑主键,确定各个数据库脚本之间的依赖关系。
其中,关系确定单元300具体用于:对各个数据库脚本进行解析,得到各个数据库脚本的脚本类型,以及各个数据库表脚本所包含的数据库表;对各个数据库表的逻辑主键进行解析,得到各个数据库表之间的依赖关系;基于各个数据表之间的依赖关系,以及各个数据库脚本所包含的数据库表,生成各个数据库脚本之间的依赖关系。
顺序确定单元400,用于基于各个数据库脚本之间的依赖关系,确定各个数据库脚本的编译顺序。
其中,顺序确定单元400具体用于:预先对各个数据库脚本进行解析,得到各个数据库脚本的脚本类型;按照各个数据库脚本之间的依赖关系,对各个数据库脚本进行排序,得到脚本序列;其中,若第一脚本被第二脚本依赖,则第一脚本在脚本序列中的序位,排在第二脚本的序位之前;对于相互之间不存在依赖关系的多个数据库脚本,按照脚本类型的预设优先级从高到低的顺序,调整多个数据库脚本在脚本序列中的序位,以使脚本类型的预设优先级较高的数据库脚本的序位,排在脚本类型的预设优先级较低的数据库脚本的序位之前;将脚本序列中各个数据库脚本的序位,标识为各个数据库脚本的编译顺序。
环境部署单元500,用于部署与数据库类型对应的运行环境。
脚本备份单元600,用于在运行环境中保存各个数据库脚本的备份脚本。
脚本编译单元700,用于在接收到用户发送的编译指令后,按照各个数据库脚本的编译顺序,在运行环境下依次对各个数据库脚本进行编译,得到各个数据库脚本的编译结果。
展示单元800,用于在各个编译结果均指示正确的情况下,通过预设前端界面向用户展示各个数据库脚本的编译顺序,并提示用户数据库脚本编排工作完成。
其中,展示单元800还用于:在任意一个数据库脚本的编译结果为错误的情况下,通过预设前端界面向用户展示编译结果为错误的数据库脚本。
回退单元900,用于在接收到用户发送的回退指令后,执行预设步骤,得到各个新的数据库脚本,以及各个新的数据库脚本的编译顺序;其中,预设步骤包括:从数据库源信息中提取各个新的数据库脚本;基于各个数据库表的逻辑主键,确定各个新的数据库脚本之间的依赖关系;基于各个新的数据库脚本之间的依赖关系,确定各个新的数据库脚本的编译顺序。
综上所述,相较于现有技术,无需人工参与数据库脚本的编排工作,便能够实现对数据库脚本的有效编排,不仅让编排效率得到显著提高,还降低了人力成本。
本申请还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的程序,其中,程序执行上述本申请提供的处理数据库脚本的方法。
本申请还提供了一种处理数据库脚本的设备,包括:处理器、存储器和总线。处理器与存储器通过总线连接,存储器用于存储程序,处理器用于运行程序,其中,程序运行时执行上述本申请提供的处理数据库脚本的方法,包括如下步骤:
获取数据库的数据库类型、各个数据库表的逻辑主键、数据库源信息;
从所述数据库源信息中提取各个数据库脚本;
基于各个所述数据库表的逻辑主键,确定各个所述数据库脚本之间的依赖关系;
基于各个所述数据库脚本之间的依赖关系,确定各个所述数据库脚本的编译顺序;
部署与所述数据库类型对应的运行环境;
在接收到用户发送的编译指令后,按照各个所述数据库脚本的编译顺序,在所述运行环境下依次对各个所述数据库脚本进行编译,得到各个所述数据库脚本的编译结果;
在各个所述编译结果均指示正确的情况下,通过预设前端界面向用户展示各个所述数据库脚本的编译顺序,并提示所述用户数据库脚本编排工作完成。
具体的,在上述实施例的基础上,所述从所述数据库源信息中提取各个数据库脚本,包括:
从预设的版本管理工具库中,获取与所述数据库类型对应的版本管理工具;
运行所述版本管理工具,以使所述版本管理工具从所述数据库源信息中,获取与所述版本管理工具所包含的正则表达式匹配的字符串;
将获取得到的各个所述字符串,均标识为数据库脚本。
具体的,在上述实施例的基础上,所述基于各个所述数据库表的逻辑主键,确定各个所述数据库脚本之间的依赖关系,包括:
对各个所述数据库脚本进行解析,得到各个所述数据库脚本的脚本类型,以及各个所述数据库表脚本所包含的数据库表;
对各个所述数据库表的逻辑主键进行解析,得到各个所述数据库表之间的依赖关系;
基于各个所述数据表之间的依赖关系,以及各个所述数据库脚本所包含的数据库表,生成各个所述数据库脚本之间的依赖关系。
具体的,在上述实施例的基础上,所述基于各个所述数据库脚本之间的依赖关系,确定各个所述数据库脚本的编译顺序,包括:
预先对各个所述数据库脚本进行解析,得到各个所述数据库脚本的脚本类型;
按照各个所述数据库脚本之间的依赖关系,对各个所述数据库脚本进行排序,得到脚本序列;其中,若第一脚本被第二脚本依赖,则所述第一脚本在所述脚本序列中的序位,排在所述第二脚本的序位之前;
对于相互之间不存在依赖关系的多个数据库脚本,按照所述脚本类型的预设优先级从高到低的顺序,调整多个所述数据库脚本在所述脚本序列中的序位,以使所述脚本类型的预设优先级较高的数据库脚本的序位,排在所述脚本类型的预设优先级较低的数据库脚本的序位之前;
将所述脚本序列中各个数据库脚本的序位,标识为各个所述数据库脚本的编译顺序。
具体的,在上述实施例的基础上,所述部署与所述数据库类型对应的运行环境之后,还包括:
在所述运行环境中保存各个所述数据库脚本的备份脚本。
具体的,在上述实施例的基础上,所述在接收到用户发送的编译指令后,按照各个所述数据库脚本的编译顺序,在所述运行环境下依次对各个所述数据库脚本进行编译,得到各个所述数据库脚本的编译结果之后,还包括:
在任意一个所述数据库脚本的编译结果为错误的情况下,通过所述预设前端界面向所述用户展示编译结果为错误的数据库脚本。
具体的,在上述实施例的基础上,还包括:
在接收到所述用户发送的回退指令后,执行预设步骤,得到各个新的数据库脚本,以及各个新的数据库脚本的编译顺序;
其中,所述预设步骤包括:从所述数据库源信息中提取各个新的数据库脚本;基于各个所述数据库表的逻辑主键,确定各个新的所述数据库脚本之间的依赖关系;基于各个新的所述数据库脚本之间的依赖关系,确定各个新的所述数据库脚本的编译顺序。
本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种处理数据库脚本的方法,其特征在于,包括:
获取数据库的数据库类型、各个数据库表的逻辑主键、数据库源信息;
从所述数据库源信息中提取各个数据库脚本;
基于各个所述数据库表的逻辑主键,确定各个所述数据库脚本之间的依赖关系;
基于各个所述数据库脚本之间的依赖关系,确定各个所述数据库脚本的编译顺序;
部署与所述数据库类型对应的运行环境;
在接收到用户发送的编译指令后,按照各个所述数据库脚本的编译顺序,在所述运行环境下依次对各个所述数据库脚本进行编译,得到各个所述数据库脚本的编译结果;
在各个所述编译结果均指示正确的情况下,通过预设前端界面向用户展示各个所述数据库脚本的编译顺序,并提示所述用户数据库脚本编排工作完成。
2.根据权利要求1所述的方法,其特征在于,所述从所述数据库源信息中提取各个数据库脚本,包括:
从预设的版本管理工具库中,获取与所述数据库类型对应的版本管理工具;
运行所述版本管理工具,以使所述版本管理工具从所述数据库源信息中,获取与所述版本管理工具所包含的正则表达式匹配的字符串;
将获取得到的各个所述字符串,均标识为数据库脚本。
3.根据权利要求1所述的方法,其特征在于,所述基于各个所述数据库表的逻辑主键,确定各个所述数据库脚本之间的依赖关系,包括:
对各个所述数据库脚本进行解析,得到各个所述数据库脚本的脚本类型,以及各个所述数据库表脚本所包含的数据库表;
对各个所述数据库表的逻辑主键进行解析,得到各个所述数据库表之间的依赖关系;
基于各个所述数据表之间的依赖关系,以及各个所述数据库脚本所包含的数据库表,生成各个所述数据库脚本之间的依赖关系。
4.根据权利要求1所述的方法,其特征在于,所述基于各个所述数据库脚本之间的依赖关系,确定各个所述数据库脚本的编译顺序,包括:
预先对各个所述数据库脚本进行解析,得到各个所述数据库脚本的脚本类型;
按照各个所述数据库脚本之间的依赖关系,对各个所述数据库脚本进行排序,得到脚本序列;其中,若第一脚本被第二脚本依赖,则所述第一脚本在所述脚本序列中的序位,排在所述第二脚本的序位之前;
对于相互之间不存在依赖关系的多个数据库脚本,按照所述脚本类型的预设优先级从高到低的顺序,调整多个所述数据库脚本在所述脚本序列中的序位,以使所述脚本类型的预设优先级较高的数据库脚本的序位,排在所述脚本类型的预设优先级较低的数据库脚本的序位之前;
将所述脚本序列中各个数据库脚本的序位,标识为各个所述数据库脚本的编译顺序。
5.根据权利要求1所述的方法,其特征在于,所述部署与所述数据库类型对应的运行环境之后,还包括:
在所述运行环境中保存各个所述数据库脚本的备份脚本。
6.根据权利要求1所述的方法,其特征在于,所述在接收到用户发送的编译指令后,按照各个所述数据库脚本的编译顺序,在所述运行环境下依次对各个所述数据库脚本进行编译,得到各个所述数据库脚本的编译结果之后,还包括:
在任意一个所述数据库脚本的编译结果为错误的情况下,通过所述预设前端界面向所述用户展示编译结果为错误的数据库脚本。
7.根据权利要求6所述的方法,其特征在于,还包括:
在接收到所述用户发送的回退指令后,执行预设步骤,得到各个新的数据库脚本,以及各个新的数据库脚本的编译顺序;
其中,所述预设步骤包括:从所述数据库源信息中提取各个新的数据库脚本;基于各个所述数据库表的逻辑主键,确定各个新的所述数据库脚本之间的依赖关系;基于各个新的所述数据库脚本之间的依赖关系,确定各个新的所述数据库脚本的编译顺序。
8.一种处理数据库脚本的装置,其特征在于,包括:
数据获取单元,用于获取数据库的数据库类型、各个数据库表的逻辑主键、数据库源信息;
脚本提取单元,用于从所述数据库源信息中提取各个数据库脚本;
关系确定单元,用于基于各个所述数据库表的逻辑主键,确定各个所述数据库脚本之间的依赖关系;
顺序确定单元,用于基于各个所述数据库脚本之间的依赖关系,确定各个所述数据库脚本的编译顺序;
环境部署单元,用于部署与所述数据库类型对应的运行环境;
脚本编译单元,用于在接收到用户发送的编译指令后,按照各个所述数据库脚本的编译顺序,在所述运行环境下依次对各个所述数据库脚本进行编译,得到各个所述数据库脚本的编译结果;
展示单元,用于在各个所述编译结果均指示正确的情况下,通过预设前端界面向用户展示各个所述数据库脚本的编译顺序,并提示所述用户数据库脚本编排工作完成。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,所述程序执行权利要求1-7任一所述的处理数据库脚本的方法。
10.一种处理数据库脚本的设备,其特征在于,包括:处理器、存储器和总线;所述处理器与所述存储器通过所述总线连接;
所述存储器用于存储程序,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1-7任一所述的处理数据库脚本的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210143384.7A CN114489678A (zh) | 2022-02-16 | 2022-02-16 | 处理数据库脚本的方法、装置、存储介质和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210143384.7A CN114489678A (zh) | 2022-02-16 | 2022-02-16 | 处理数据库脚本的方法、装置、存储介质和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114489678A true CN114489678A (zh) | 2022-05-13 |
Family
ID=81481958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210143384.7A Pending CN114489678A (zh) | 2022-02-16 | 2022-02-16 | 处理数据库脚本的方法、装置、存储介质和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114489678A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453552A (zh) * | 2023-10-30 | 2024-01-26 | 赛力斯汽车有限公司 | 一种脚本测试顺序的调整方法、装置及存储介质 |
-
2022
- 2022-02-16 CN CN202210143384.7A patent/CN114489678A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453552A (zh) * | 2023-10-30 | 2024-01-26 | 赛力斯汽车有限公司 | 一种脚本测试顺序的调整方法、装置及存储介质 |
CN117453552B (zh) * | 2023-10-30 | 2024-06-25 | 赛力斯汽车有限公司 | 一种脚本测试顺序的调整方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110795455B (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
US20240045850A1 (en) | Systems and methods for database orientation transformation | |
CN106843840B (zh) | 一种基于相似度分析的源代码版本演化注释复用方法 | |
CN110737594B (zh) | 自动生成测试用例的数据库标准符合性测试方法及装置 | |
CN109634970B (zh) | 表数据同步方法、设备、存储介质及装置 | |
US7418449B2 (en) | System and method for efficient enrichment of business data | |
CN108205560B (zh) | 一种数据同步方法以及装置 | |
JP2010524060A (ja) | 分散コンピューティングにおけるデータマージング | |
US10013242B2 (en) | Distributed compilation of statically typed languages | |
CN110737437A (zh) | 一种基于代码集成的编译方法和装置 | |
CN112988782A (zh) | Hive支持交互式查询的方法、装置及存储介质 | |
CN115357515B (zh) | 一种多核系统的调试方法、装置、计算机设备及存储介质 | |
CN111367893A (zh) | 数据库版本迭代的方法及装置 | |
CN114489678A (zh) | 处理数据库脚本的方法、装置、存储介质和设备 | |
CN114490554A (zh) | 数据同步方法及其装置、电子设备及存储介质 | |
CN113901021A (zh) | 用于多版本数据库的升级脚本生成方法、装置与电子设备 | |
CN110633084B (zh) | 基于单个样例的代码转换推导方法和装置 | |
CN106843822B (zh) | 一种执行代码生成方法及设备 | |
CN112732242A (zh) | 宽表加工脚本的生成方法及装置 | |
CN113867714B (zh) | 一种适配多语言的自动代码生成方法 | |
CN116595044A (zh) | 数据库选择率计算的优化方法、存储介质与设备 | |
US9396239B2 (en) | Compiling method, storage medium and compiling apparatus | |
CN112130849B (zh) | 代码自动生成方法及装置 | |
CN115168085A (zh) | 一种基于diff代码块匹配的重复冲突方案检测方法 | |
CN113051262A (zh) | 一种数据质检方法、装置、设备及存储介质 |
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 |