CN113157711A - 数据库语句执行方法及装置 - Google Patents
数据库语句执行方法及装置 Download PDFInfo
- Publication number
- CN113157711A CN113157711A CN202110188756.3A CN202110188756A CN113157711A CN 113157711 A CN113157711 A CN 113157711A CN 202110188756 A CN202110188756 A CN 202110188756A CN 113157711 A CN113157711 A CN 113157711A
- Authority
- CN
- China
- Prior art keywords
- database
- execution
- changed
- statement
- executing
- 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
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/23—Updating
-
- 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/245—Query processing
- G06F16/2455—Query execution
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库语句执行方法及装置,其中,该方法包括:获取数据库变更配置文件,其中,数据库变更配置文件中包含:待变更数据库的数据库信息、对待变更数据库执行的预设数据库操作;根据待变更数据库的数据库信息和预设数据库操作对应的预设数据库语句,生成对待变更数据库执行预设数据库操作的数据库语句;执行对待变更数据库执行预设数据库操作的数据库语句。本发明可同时支持多种类型数据库的变更,无需登录到多个机器来实现多个数据库的变更,大大提高了数据库变更效率。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据库语句执行方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
为了解决由于数据量过大而导致数据库性能降低的问题,通常利用分库分表,将原来独立的数据库拆分成若干个数据库,将一个大的数据表拆分成若干个小的数据表,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。
传统数据库变更方法,需要登录到数据库客户端,执行相应的数据库语句(例如,SQL语句)。这种方式仅适用于简单的数据库变更,不适用于采用分库分表的大型***。因而,如何提供一种适用于分库分表的数据库语句执行方法,是目前亟待解决的技术问题。
发明内容
本发明实施例中提供了一种数据库语句执行方法,用以解决传统数据库变更方法不适用于分库分表数据库变更的技术问题,该方法包括:获取数据库变更配置文件,其中,数据库变更配置文件中包含:待变更数据库的数据库信息、对待变更数据库执行的预设数据库操作;根据待变更数据库的数据库信息和预设数据库操作对应的预设数据库语句,生成对待变更数据库执行预设数据库操作的数据库语句;执行对待变更数据库执行预设数据库操作的数据库语句。
可选地,当对待变更数据库执行的预设数据库操作包括多个数据库操作的情况下,数据库变更配置文件中还包含:执行方式和并发数量,执行方式包括:串行执行和并行执行,串行执行用于采用串行的方式执行各个数据库操作,并行执行用于采用并行的方式执行各个数据库操作。
可选地,本发明实施例中提供的数据库语句执行方法还包括:从线程池中开启相应并发数量的线程,采用并行的方式执行各个数据库操作的数据库语句。
可选地,本发明实施例中提供的数据库语句执行方法还包括:监测对待变更数据库执行各个数据库操作的执行状态,其中,执行状态包括:未开始、执行中、执行成功和执行失败。
可选地,本发明实施例中提供的数据库语句执行方法还包括:当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,将待变更数据库的执行状态确定为执行失败。
可选地,本发明实施例中提供的数据库语句执行方法还包括:当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,继续执行其他数据库操作对应的数据库语句。
可选地,本发明实施例中提供的数据库语句执行方法还包括:当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,退出执行相应数据库语句的线程。
可选地,本发明实施例中提供的数据库语句执行方法还包括:当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,标记执行失败的数据库语句;
当执行失败的数据库语句被修正的情况下,重新执行修正后的数据库语句。
可选地,本发明实施例中提供的数据库语句执行方法数据库变更配置文件为Json格式的配置文件。
可选地,本发明实施例中提供的数据库语句执行方法中,执行对待变更数据库执行预设数据库操作的数据库语句,包括:调用JDBC API工具,执行对待变更数据库执行预设数据库操作的数据库语句。
可选地,本发明实施例中提供的数据库语句执行方法中,执行对待变更数据库执行预设数据库操作的数据库语句,包括:调用SQL Plus工具,执行对待变更数据库执行预设数据库操作的数据库语句。
本发明实施例中还提供了一种数据库语句执行装置,用以解决传统数据库变更方法不适用于分库分表数据库变更的技术问题,该装置包括:配置文件获取模块,用于获取数据库变更配置文件,其中,数据库变更配置文件中包含:待变更数据库的数据库信息、对待变更数据库执行的预设数据库操作;数据库语句生成模块,用于根据待变更数据库的数据库信息和预设数据库操作对应的预设数据库语句,生成对待变更数据库执行预设数据库操作的数据库语句;数据库语句执行模块,用于执行对待变更数据库执行预设数据库操作的数据库语句。
可选地,本发明实施例中提供的数据库语句执行装置中,当对待变更数据库执行的预设数据库操作包括多个数据库操作的情况下,数据库变更配置文件中还包含:执行方式和并发数量,执行方式包括:串行执行和并行执行,串行执行用于采用串行的方式执行各个数据库操作,并行执行用于采用并行的方式执行各个数据库操作。
可选地,当数据库变更配置文件中的执行方式为并行执行的情况下,本发明实施例中提供的数据库语句执行装置中,数据库语句执行模块还用于:从线程池中开启相应并发数量的线程,采用并行的方式执行各个数据库操作的数据库语句。
本发明实施例中提供的数据库语句执行装置还包括:执行状态监测模块,用于监测对待变更数据库执行各个数据库操作的执行状态,其中,执行状态包括:未开始、执行中、执行成功和执行失败。
可选地,本发明实施例中提供的数据库语句执行装置中,执行状态监测模块还用于:当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,将待变更数据库的执行状态确定为执行失败。
可选地,本发明实施例中提供的数据库语句执行装置中,数据库语句执行模块还用于:当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,继续执行其他数据库操作对应的数据库语句。
可选地,本发明实施例中提供的数据库语句执行装置中,数据库语句执行模块还用于:当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,退出执行相应数据库语句的线程。
可选地,本发明实施例中提供的数据库语句执行装置中,数据库语句执行模块还用于:当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,标记执行失败的数据库语句;当执行失败的数据库语句被修正的情况下,重新执行修正后的数据库语句。
可选地,本发明实施例中提供的数据库语句执行装置中,数据库变更配置文件为Json格式的配置文件。
可选地,本发明实施例中提供的数据库语句执行装置中,数据库语句执行模块还用于:调用JDBC API工具,执行对待变更数据库执行预设数据库操作的数据库语句。
可选地,本发明实施例中提供的数据库语句执行装置中,数据库语句执行模块还用于:调用SQL Plus工具,执行对待变更数据库执行预设数据库操作的数据库语句。
本发明实施例中还提供了一种电子设备,用以解决传统数据库变更方法不适用于分库分表数据库变更的技术问题,该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述数据库语句执行方法。
本发明实施例中还提供了一种计算机可读存储介质,用以解决传统数据库变更方法不适用于分库分表数据库变更的技术问题,该计算机可读存储介质存储有执行上述数据库语句执行方法的计算机程序。
本发明实施例中,在数据变更配置文件中配置待变更数据库的数据库信息、对待变更数据库执行的预设数据库操作,进而根据待变更数据库的数据库信息和预设数据库操作对应的预设数据库语句,生成对待变更数据库执行预设数据库操作的数据库语句,最后执行对待变更数据库执行预设数据库操作的数据库语句,实现对待变更数据库的变更。本发明实施例,可同时支持多种类型数据库的变更,无需登录到多个机器来实现多个数据库的变更,大大提高了数据库变更效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中提供的一种数据库语句执行方法流程图;
图2为本发明实施例中提供的一种可选的数据库语句执行方法流程图;
图3为本发明实施例中提供的一种配置文件示意图;
图4为本发明实施例中提供的一种数据库操作执行的断点续传示意图;
图5为本发明实施例中提供的一种数据库语句执行装置示意图;
图6为本发明实施例中提供的一种可选的数据库语句执行装置示意图;
图7为本发明实施例中提供的一种电子设备的***组成结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
金融***的版本迭代是非常频繁的,不同版本会在不同的测试环境进行测试,每个测试环境都有相应的数据库,贷记卡境内、境外、国产化平台、对外输出平台等环境加起来就有几十套数据库环境,在日常测试过程中,登录几十台机器进行数据库的变更是非常耗费人力的。
随着业务发展,数据表的数量以及单表数据量越来越大,为了提高数据库的性能,数据库需要进行分库分表,即将原本数据量大的数据库拆分成多个单独的数据库,将原本数据量大的表拆分成若干数据表,使得单一的库、表性能达到最优的效果,以此提升整体数据库性能。贷记卡由于数据量非常大,将数据库划分为6个库,1024张表,如果单独变更每一张数据表,那么数据库部署工作量将非常大,并且重复度高。
为了解决上述问题,本发明实施例中提供了一种数据库语句执行方法,可以应用但不限于如下类型的数据库:Oracle数据库、Gauss数据库、SQLite数据库。
图1为本发明实施例中提供的一种数据库语句执行方法流程图,如图1所示,该方法包括如下步骤:
S101,获取数据库变更配置文件,其中,数据库变更配置文件中包含:待变更数据库的数据库信息、对待变更数据库执行的预设数据库操作。
可选地,本发明实施例中提供的数据库语句执行方法数据库变更配置文件为Json格式的配置文件。
需要说明的是,上述S101获取的数据库变更配置文件是预先配置的包含待变更数据库的数据库信息、对待变更数据库执行的预设数据库操作等信息的文件。对待变更数据库执行的预设数据库操作可以是一个数据库操作,也可以是多个数据库操作。
当对待变更数据库执行的预设数据库操作包括多个数据库操作的情况下,数据库变更配置文件中还包含:执行方式和并发数量,执行方式包括:串行执行和并行执行,串行执行用于采用串行的方式执行各个数据库操作,并行执行用于采用并行的方式执行各个数据库操作。
S102,根据待变更数据库的数据库信息和预设数据库操作对应的预设数据库语句,生成对待变更数据库执行预设数据库操作的数据库语句。
需要说明的是,本发明实施例中预设数据库语句为预先配置的对某个数据库执行预设数据库操作的数据库语句,该预设数据库语句中数据库对应的位置采用一个预设符号表示,根据待变更数据库的数据库信息,替换该预设数据库语句中的预设符号,则可生成对待变更数据库执行预设数据库操作的数据库语句(即实际执行的数据库语句)。
例如,当数据库语句为SQL语句的情况下,替换SQL语句中“[X]”这个预设符号,即可实现对待变更数据库的执行相应的数据库操作。结构化查询语言(Structured QueryLanguage,简称SQL),结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库***;SQL语句就是对数据库进行操作的一种语言。
S103,执行对待变更数据库执行预设数据库操作的数据库语句。
需要说明的是,在生成对待变更数据库执行预设数据库操作的数据库语句后,通过执行该数据库语句,则可实现对待变更数据库执行相应的预设数据库操作。
在具体实施时,对于Java版本的数据库,上述S103可以通过调用JDBC API工具,执行对待变更数据库执行预设数据库操作的数据库语句。对于Python版本的数据库,上述S103可以调用SQL Plus工具,执行对待变更数据库执行预设数据库操作的数据库语句。
本发明实施例中提供的数据库语句执行方法,可以适用于分库分表的各种数据库***。分库分表包括分库和分表两个部分,在生产中通常包括:垂直分库、水平分库、垂直分表、水平分表四种方式。
其中,垂直分表是将一个宽表的字段按访问频次、是否是大字段的原则拆分为多个表,这样既能使业务清晰,还能提升部分性能。拆分后,尽量从业务角度避免联查,否则性能方面将得不偿失。垂直分库是将多个表按业务耦合松紧归类,分别存放在不同的库,这些库可以分布在不同服务器,从而使访问压力被多服务器负载,大大提升性能,同时能提高整体架构的业务清晰度,不同的业务库可根据自身情况定制优化方案。但是它需要解决跨库带来的所有复杂问题。水平分库是将一个表的数据(按数据行)分到多个不同的库,每个库只有这个表的部分数据,这些库可以分布在不同服务器,从而使访问压力被多服务器负载,大大提升性能。它不仅需要解决跨库带来的所有复杂问题,还要解决数据路由的问题(数据路由问题后边介绍)。水平分表是将一个表的数据(按数据行)分到多个同一个数据库的多张表中,每个表只有这个表的部分数据,这样做能小幅提升性能,它仅仅作为水平分库的一个补充优化。
通常,在***设计阶段就应该根据业务耦合松紧来确定垂直分库,垂直分表方案,在数据量及访问压力不是特别大的情况,首先考虑缓存、读写分离、索引技术等方案。若数据量极大,且持续增长,再考虑水平分库水平分表方案。
由上可知,本发明实施例中提供的数据库语句执行方法,在数据变更配置文件中配置待变更数据库的数据库信息、对待变更数据库执行的预设数据库操作,进而根据待变更数据库的数据库信息和预设数据库操作对应的预设数据库语句,生成对待变更数据库执行预设数据库操作的数据库语句,最后执行对待变更数据库执行预设数据库操作的数据库语句,实现对待变更数据库的变更。本发明实施例,可同时支持多种类型数据库的变更,无需登录到多个机器来实现多个数据库的变更,大大提高了数据库变更效率。
在一个实施例中,当对待变更数据库执行的预设数据库操作包括多个数据库操作的情况下,本发明实施例中提供的数据库语句执行方法还包括:从线程池中开启相应并发数量的线程,采用并行的方式执行各个数据库操作的数据库语句。
在一个实施例中,如图2所示,本发明实施例中提供的数据库语句执行方法还包括如下步骤:
S104,监测对待变更数据库执行各个数据库操作的执行状态,其中,执行状态包括:未开始、执行中、执行成功和执行失败。
需要说明的是,当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,本发明实施例中提供的数据库语句执行方法还包括如下步骤:当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下将待变更数据库的执行状态确定为执行失败。
在一个实施例中,当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,本发明实施例中提供的数据库语句执行方法,可以继续执行其他数据库操作对应的数据库语句。
在一个实施例中,当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,本发明实施例中提供的数据库语句执行方法还包括:退出执行相应数据库语句的线程。
在一个实施例中,当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,本发明实施例中提供的数据库语句执行方法还包括:标记执行失败的数据库语句;当执行失败的数据库语句被修正的情况下,重新执行修正后的数据库语句。
本发明实施例中提供的数据库语句执行方法,可满足分库分表以及多环境的需求,根据本发明实施例中提供的数据库语句执行方法,可开发Java和Python两个版本的数据库执行工具。
一、Java版本的数据库执行工具:
该工具对Json格式配置文件进行解析,调用JDBC API执行相应的数据库变更。它可以在任意一个网络相通的环境里执行,因此可以在本地云桌面执行,不需要登录机器就可以同时完成多个数据库的变更操作。工具包括以下几个功能:分库分表处理、多环境处理、异常处理以及其他辅助功能。
图3为本发明实施例中提供的一种配置文件示意图,如图3所示,通过解析配置文件完成数据库变更。配置文件是一个json格式的文件,由GroupOperation数组定义了多个并行操作。GroupOperation数组中可包括如下参数:
1)Name表示本次数据库执行的名称;
2)Description表示本次数据库执行的描述;
3)ExecuteMode表示执行方式,Concurrency并行和Sequence串行两种;
4)Concurrence表示并发数,如果执行方式是并行,工具会建立对应并发数的线程池,遍历整个Operation数组,调用线程去执行;
5)Operation表示操作数组,定义了具体的数据库执行操作。该数组中包含如下参数:
Name:操作名称;
Description:操作描述;
DBURL:JDBC连接串;
UserName:数据库用户名;
Password:数据库密码;
Usage:本次操作类型,包括oracle数据库操作,SQLite数据库操作,gauss数据库操作,通过该参数会加载不同的数据库驱动,从而建立不同的数据库链接;
timeout:数据库执行单条语句的超时时间;
Seperator:数据库语句分隔符,工具会以此为分隔符解析多条SQL语句;
OperationOption:数据库操作可选类型,包括默认,只DROP表不建表,如果表存在就先删除后建表,如果表存在就跳过,清空表中数据,只创建表。可根据实际情况进行该参数的配置,例如如果刷新一个数据库的表结构,当前数据库中可能已存在一些数据库表,但是表结构不新,可以使用“如果表存在就先删除后建表”的操作,避免当有同名表存在时,建表会报错的问题;
BasketNumberRange:篮子号,如果是分库分表的数据库表,会根据此篮子号替换表名,建立对应篮子号的数据库表;
FailAction:异常处理方式,包括忽略异常继续、遇到异常退出、断点续传三种容错机制;
Espects:数组类型,配置一连串需要执行的SQL文件。
需要说明的是,GroupOperation定义了本次数据库变更需要执行的内容(例如,对授权数据库进行数据库变更操作),可以定义多个GroupOperation,工具会循环服务json数组中的每一个GroupOperation,进行串行操作。GroupOperation中包含的本次操作的操作名称、执行方式、一组操作的定义等信息,GroupOperation中的操作可以选择串行或并行执行,通过ExecuteMode参数和Concurrence参数可以定义操作的执行方式和并发数量。工具根据并发数量,从线程池中开启对应数量的线程执行。通过并发操作,数据库变更可以同时在多个数据库中同时进行操作,从而提高变更效率。
需要注意的是,操作的执行方式由ExecuteMode参数定义,有串行和并行两种。一组操作是指Operaion数组对应的值,比如数据库变更是要对授权数据库新增一个表结构,授权数据库由6个数据库组成,因为就需要在Operaion数组中,配置6个数据库的操作。
BasketNumber定义了分库分表的篮子号,工具会获取SQL语句中[X]标志的语句,并将[X]替换成篮子号,生成新的SQL语句执行。在实际数据库变更过程中,可能会有多种情况,比如刷新整套数据库结构、只建索引等多种需求,可以在OperationOption中定义不同的操作类型,包括DROP(删除表)、DROPIFEXIST(建表时如果有就删除)、SKIPIFEXIST(建表时如果有就跳过)等多种操作定义,工具会将获取到的SQL语句进行处理,从而完成不同的操作。
在本发明实施例中,包含[X]标志的SQL语句是预先定义的。
例如,SQL语句中会定义CREATE TABLE TEST_[X],工具会解析到此处有[X]标志,进而根据BasketNumberRange篮子号范围中定义的值去依次替换这个标志,每次替换完就执行一次语句,然后再替换下一个值,直到结束。例如BasketNumberRange定义为000001-000010,工具会替换sql语句为CREATE TABLE TEST_000001并执行,直到000010。
工具可以实时跟踪每个Operation操作的执行状态,分为未开始、执行中、执行成功、执行失败,如果其中一个SQL文件没有执行成功,那么当前Operation操作的结果就为失败,进而整体GroupOperation的操作结果也会定义为失败。工具提供了强大的失败处理机制,通过FailAction参数可以定义,包括忽略异常继续、遇到异常退出、断点续传三种容错机制,针对这三种容错机制的处理方式如下所述:
①忽略异常的处理方式:调用API执行SQL语句报错,忽略不处理,继续执行。
②遇到异常退出的处理方式:调用API执行SQL语句报错,当前Operation线程退出。
③断点续传的处理方式:断电续传的核心就是将待执行的SQL语句分片,然后使用多线程并发执行,因此每个Operation中的Expects需要定义多个线程,将SQL文件按标志分给每个线程去解析和执行,SQL文件中对SQL语句进行了标志,需要同一组顺序执行的语句要放在一组,不同的Expects线程执行报错后,当前线程会将执行过的语句回退,然后进入等待状态,工具会输出一个tag文件作为等待标志,待变更人员修改完错误的SQL语句后,将tag文件删除,Expects线程会重新读取SQL文件中的语句段,进而重新执行语句。流程如图4所示。
需要说明的是,通过定义Usage参数可以建立不同类型数据库(Oracle数据库、Gauss数据库、SQLite数据库)的连接,在数据库扩展方面也非常方便。
二、Python版本的数据库执行工具:基于SQLPlus执行数据库变更,作为java工具的补充版本,可以完成JDBC不能执行的数据库变更操作,例如imp、exp等数据库导入导出的命令。
基于同一发明构思,本发明实施例中还提供了一种数据库语句执行装置,如下面的实施例所述。由于该装置解决问题的原理与数据库语句执行方法相似,因此该装置的实施可以参见数据库语句执行方法的实施,重复之处不再赘述。
图5为本发明实施例中提供的一种数据库语句执行装置示意图,如图5所示,该装置包括:配置文件获取模块51、数据库语句生成模块52和数据库语句执行模块53。
其中,配置文件获取模块51,用于获取数据库变更配置文件,其中,数据库变更配置文件中包含:待变更数据库的数据库信息、对待变更数据库执行的预设数据库操作;数据库语句生成模块52,用于根据待变更数据库的数据库信息和预设数据库操作对应的预设数据库语句,生成对待变更数据库执行预设数据库操作的数据库语句;数据库语句执行模块53,用于执行对待变更数据库执行预设数据库操作的数据库语句。
由上可知,本发明实施例中提供的数据库语句执行装置,在数据变更配置文件中配置待变更数据库的数据库信息、对待变更数据库执行的预设数据库操作,进而根据待变更数据库的数据库信息和预设数据库操作对应的预设数据库语句,生成对待变更数据库执行预设数据库操作的数据库语句,最后执行对待变更数据库执行预设数据库操作的数据库语句,实现对待变更数据库的变更。本发明实施例,可同时支持多种类型数据库的变更,无需登录到多个机器来实现多个数据库的变更,大大提高了数据库变更效率。
在一个实施例中,本发明实施例中提供的数据库语句执行装置中,当对待变更数据库执行的预设数据库操作包括多个数据库操作的情况下,数据库变更配置文件中还包含:执行方式和并发数量,执行方式包括:串行执行和并行执行,串行执行用于采用串行的方式执行各个数据库操作,并行执行用于采用并行的方式执行各个数据库操作。
在一个实施例中,当数据库变更配置文件中的执行方式为并行执行的情况下,本发明实施例中提供的数据库语句执行装置中,数据库语句执行模块53还用于:从线程池中开启相应并发数量的线程,采用并行的方式执行各个数据库操作的数据库语句。
在一个实施例中,如图6所示,本发明实施例中提供的数据库语句执行装置还包括:执行状态监测模块54,用于监测对待变更数据库执行各个数据库操作的执行状态,其中,执行状态包括:未开始、执行中、执行成功和执行失败。
在一个实施例中,本发明实施例中提供的数据库语句执行装置中,执行状态监测模块54还用于:当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,将待变更数据库的执行状态确定为执行失败。
在一个实施例中,本发明实施例中提供的数据库语句执行装置中,数据库语句执行模块53还用于:当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,继续执行其他数据库操作对应的数据库语句。
在一个实施例中,本发明实施例中提供的数据库语句执行装置中,数据库语句执行模块53还用于:当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,退出执行相应数据库语句的线程。
在一个实施例中,本发明实施例中提供的数据库语句执行装置中,数据库语句执行模块53还用于:当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,标记执行失败的数据库语句;当执行失败的数据库语句被修正的情况下,重新执行修正后的数据库语句。
在一个实施例中,本发明实施例中提供的数据库语句执行装置中,数据库变更配置文件为Json格式的配置文件。
在一个实施例中,本发明实施例中提供的数据库语句执行装置中,数据库语句执行模块53还用于:调用JDBC API工具,执行对待变更数据库执行预设数据库操作的数据库语句。
在一个实施例中,本发明实施例中提供的数据库语句执行装置中,数据库语句执行模块53还用于:调用SQL Plus工具,执行对待变更数据库执行预设数据库操作的数据库语句。
基于同一发明构思,本发明实施例中还提供了一种用于实现上述数据库语句执行方法中的全部或部分内容的电子设备实施例。该电子设备具体包含有如下内容:
处理器(processor)、存储器(memory)、通信接口(Communications Interface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述通信接口用于实现相关设备之间的信息传输;该电子设备可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该电子设备可以参照实施例用于实现上述数据库语句执行方法的实施例及用于实现上述数据库语句执行装置的实施例进行实施,其内容被合并于此,重复之处不再赘述。
图7为本发明实施例中提供的一种电子设备的***组成结构示意图。如图7所示,该电子设备70可以包括处理器701和存储器702;存储器702耦合到处理器701。值得注意的是,该图7是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
在一个实施例中,数据库语句执行方法实现的功能可以被集成到处理器701中。其中,处理器701可以被配置为进行如下控制:获取数据库变更配置文件,其中,数据库变更配置文件中包含:待变更数据库的数据库信息、对待变更数据库执行的预设数据库操作;根据待变更数据库的数据库信息和预设数据库操作对应的预设数据库语句,生成对待变更数据库执行预设数据库操作的数据库语句;执行对待变更数据库执行预设数据库操作的数据库语句。
由上可知,本发明的实施例中提供的电子设备,在数据变更配置文件中配置待变更数据库的数据库信息、对待变更数据库执行的预设数据库操作,进而根据待变更数据库的数据库信息和预设数据库操作对应的预设数据库语句,生成对待变更数据库执行预设数据库操作的数据库语句,最后执行对待变更数据库执行预设数据库操作的数据库语句,实现对待变更数据库的变更。本发明实施例,可同时支持多种类型数据库的变更,无需登录到多个机器来实现多个数据库的变更,大大提高了数据库变更效率。
在另一个实施例中,数据库语句执行装置可以与处理器701分开配置,例如可以将数据库语句执行装置配置为与处理器701连接的芯片,通过处理器的控制来实现数据库语句执行方法的功能。
如图7所示,该电子设备70还可以包括:通信模块703、输入单元704、音频处理单元705、显示器706、电源707。值得注意的是,电子设备70也并不是必须要包括图7中所示的所有部件;此外,电子设备70还可以包括图7中没有示出的部件,可以参考现有技术。
如图7所示,处理器701有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该处理器701接收输入并控制电子设备70的各个部件的操作。
其中,存储器702,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且处理器701可执行该存储器702存储的该程序,以实现信息存储或处理等。
输入单元704向处理器701提供输入。该输入单元704例如为按键或触摸输入装置。电源707用于向电子设备70提供电力。显示器706用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器702可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器702还可以是某种其它类型的装置。存储器702包括缓冲存储器7021(有时被称为缓冲器)。存储器702可以包括应用/功能存储部7022,该应用/功能存储部7022用于存储应用程序和功能程序或用于通过处理器701执行电子设备70的操作的流程。
存储器702还可以包括数据存储部7023,该数据存储部7023用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器702的驱动程序存储部7024可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通信模块703即为经由天线708发送和接收信号的发送机/接收机。通信模块(发送机/接收机)703耦合到处理器701,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块703,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)703还经由音频处理单元705耦合到扬声器709和麦克风710,以经由扬声器709提供音频输出,并接收来自麦克风710的音频输入,从而实现通常的电信功能。音频处理单元705可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理单元705还耦合到处理器701,从而使得可以通过麦克风710能够在本机上录音,且使得可以通过扬声器709来播放本机上存储的声音。
本发明的实施例中还提供了一种用于实现上述实施例中数据库语句执行方法中全部步骤的一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的数据库语句执行方法的全部步骤,例如,该处理器执行该计算机程序时实现下述步骤:获取数据库变更配置文件,其中,数据库变更配置文件中包含:待变更数据库的数据库信息、对待变更数据库执行的预设数据库操作;根据待变更数据库的数据库信息和预设数据库操作对应的预设数据库语句,生成对待变更数据库执行预设数据库操作的数据库语句;执行对待变更数据库执行预设数据库操作的数据库语句。
由上可知,本发明的实施例中提供的计算机可读存储介质,在数据变更配置文件中配置待变更数据库的数据库信息、对待变更数据库执行的预设数据库操作,进而根据待变更数据库的数据库信息和预设数据库操作对应的预设数据库语句,生成对待变更数据库执行预设数据库操作的数据库语句,最后执行对待变更数据库执行预设数据库操作的数据库语句,实现对待变更数据库的变更。本发明实施例,可同时支持多种类型数据库的变更,无需登录到多个机器来实现多个数据库的变更,大大提高了数据库变更效率。
虽然本发明提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本领域技术人员应明白,本说明书的实施例可提供为方法、装置(***)或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。本发明并不局限于任何单一的方面,也不局限于任何单一的实施例,也不局限于这些方面和/或实施例的任意组合和/或置换。可单独使用本发明的每个方面和/或实施例,或者与一个或更多其他方面和/或其他实施例结合使用。
以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例中所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
Claims (24)
1.一种数据库语句执行方法,其特征在于,包括:
获取数据库变更配置文件,其中,所述数据库变更配置文件中包含:待变更数据库的数据库信息、对待变更数据库执行的预设数据库操作;
根据所述待变更数据库的数据库信息和预设数据库操作对应的预设数据库语句,生成对待变更数据库执行预设数据库操作的数据库语句;
执行对待变更数据库执行预设数据库操作的数据库语句。
2.如权利要求1所述的方法,其特征在于,当对待变更数据库执行的预设数据库操作包括多个数据库操作的情况下,所述数据库变更配置文件中还包含:执行方式和并发数量,所述执行方式包括:串行执行和并行执行,所述串行执行用于采用串行的方式执行各个数据库操作,所述并行执行用于采用并行的方式执行各个数据库操作。
3.如权利要求2所述的方法,其特征在于,当数据库变更配置文件中的执行方式为并行执行的情况下,所述方法还包括:
从线程池中开启相应并发数量的线程,采用并行的方式执行各个数据库操作的数据库语句。
4.如权利要求3所述的方法,其特征在于,在执行对待变更数据库执行预设数据库操作的数据库语句之后,所述方法还包括:
监测对待变更数据库执行各个数据库操作的执行状态,其中,所述执行状态包括:未开始、执行中、执行成功和执行失败。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,将所述待变更数据库的执行状态确定为执行失败。
6.如权利要求4所述的方法,其特征在于,所述方法还包括:
当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,继续执行其他数据库操作对应的数据库语句。
7.如权利要求4所述的方法,其特征在于,所述方法还包括:
当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,退出执行相应数据库语句的线程。
8.如权利要求4所述的方法,其特征在于,所述方法还包括:
当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,标记执行失败的数据库语句;
当执行失败的数据库语句被修正的情况下,重新执行修正后的数据库语句。
9.如权利要求1至6任一项所述的方法,其特征在于,所述数据库变更配置文件为Json格式的配置文件。
10.如权利要求9所述的方法,其特征在于,执行对待变更数据库执行预设数据库操作的数据库语句,包括:
调用JDBC API工具,执行对待变更数据库执行预设数据库操作的数据库语句。
11.如权利要求9所述的方法,其特征在于,执行对待变更数据库执行预设数据库操作的数据库语句,包括:
调用SQL Plus工具,执行对待变更数据库执行预设数据库操作的数据库语句。
12.一种数据库语句执行装置,其特征在于,包括:
配置文件获取模块,用于获取数据库变更配置文件,其中,所述数据库变更配置文件中包含:待变更数据库的数据库信息、对待变更数据库执行的预设数据库操作;
数据库语句生成模块,用于根据所述待变更数据库的数据库信息和预设数据库操作对应的预设数据库语句,生成对待变更数据库执行预设数据库操作的数据库语句;
数据库语句执行模块,用于执行对待变更数据库执行预设数据库操作的数据库语句。
13.如权利要求12所述的装置,其特征在于,当对待变更数据库执行的预设数据库操作包括多个数据库操作的情况下,所述数据库变更配置文件中还包含:执行方式和并发数量,所述执行方式包括:串行执行和并行执行,所述串行执行用于采用串行的方式执行各个数据库操作,所述并行执行用于采用并行的方式执行各个数据库操作。
14.如权利要求13所述的装置,其特征在于,当数据库变更配置文件中的执行方式为并行执行的情况下,所述数据库语句执行模块还用于:从线程池中开启相应并发数量的线程,采用并行的方式执行各个数据库操作的数据库语句。
15.如权利要求14所述的装置,其特征在于,所述装置还包括:
执行状态监测模块,用于监测对待变更数据库执行各个数据库操作的执行状态,其中,所述执行状态包括:未开始、执行中、执行成功和执行失败。
16.如权利要求15所述的装置,其特征在于,所述执行状态监测模块还用于:
当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,将所述待变更数据库的执行状态确定为执行失败。
17.如权利要求15所述的装置,其特征在于,所述数据库语句执行模块还用于:
当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,继续执行其他数据库操作对应的数据库语句。
18.如权利要求15所述的装置,其特征在于,所述数据库语句执行模块还用于:
当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,退出执行相应数据库语句的线程。
19.如权利要求15所述的装置,其特征在于,所述数据库语句执行模块还用于:
当监测到对待变更数据库执行的任意一个数据库操作执行失败的情况下,标记执行失败的数据库语句;
当执行失败的数据库语句被修正的情况下,重新执行修正后的数据库语句。
20.如权利要求12至19任一项所述的装置,其特征在于,所述数据库变更配置文件为Json格式的配置文件。
21.如权利要求20所述的装置,其特征在于,所述数据库语句执行模块还用于:
调用JDBC API工具,执行对待变更数据库执行预设数据库操作的数据库语句。
22.如权利要求20所述的装置,其特征在于,所述数据库语句执行模块还用于:
调用SQL Plus工具,执行对待变更数据库执行预设数据库操作的数据库语句。
23.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11任一项所述数据库语句执行方法。
24.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至11任一项所述数据库语句执行方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110188756.3A CN113157711A (zh) | 2021-02-19 | 2021-02-19 | 数据库语句执行方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110188756.3A CN113157711A (zh) | 2021-02-19 | 2021-02-19 | 数据库语句执行方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113157711A true CN113157711A (zh) | 2021-07-23 |
Family
ID=76883822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110188756.3A Pending CN113157711A (zh) | 2021-02-19 | 2021-02-19 | 数据库语句执行方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113157711A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114328719A (zh) * | 2021-11-30 | 2022-04-12 | 唯品会(广州)软件有限公司 | 数据库语句同步方法、***、电子设备及计算机可读存储介质 |
-
2021
- 2021-02-19 CN CN202110188756.3A patent/CN113157711A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114328719A (zh) * | 2021-11-30 | 2022-04-12 | 唯品会(广州)软件有限公司 | 数据库语句同步方法、***、电子设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8150948B2 (en) | Complex software deployment | |
US10282350B1 (en) | Data store optimizer | |
CN112380180A (zh) | 数据同步处理方法、装置、设备及存储介质 | |
CN110543301B (zh) | jenkins代码文件的生成方法及装置 | |
CN109902017A (zh) | 一种基于RobotFramework测试Dubbo接口的方法及终端 | |
CN112256581B (zh) | 高***券业交易类***的日志回放测试方法及装置 | |
US11675690B2 (en) | Lineage-driven source code generation for building, testing, deploying, and maintaining data marts and data pipelines | |
CN110198327B (zh) | 一种数据传输方法及相关设备 | |
CN110737594A (zh) | 自动生成测试用例的数据库标准符合性测试方法及装置 | |
CN111949832A (zh) | 批量作业依赖关系的解析方法及装置 | |
CN113157711A (zh) | 数据库语句执行方法及装置 | |
CN112783867A (zh) | 为满足实时大数据业务需求的数据库优化方法及云服务器 | |
CN113238965B (zh) | 一种接口测试脚本生成方法、***及存储介质 | |
CN113672674A (zh) | 一种自动编排业务流的方法、电子装置和存储介质 | |
CN111274325A (zh) | 平台自动化测试方法及*** | |
US7464363B2 (en) | Verification support device, verification support method, and computer product | |
CN111782641B (zh) | 数据错误修复方法及*** | |
CN111339100B (zh) | 数据核对方法及装置 | |
CN112860585B (zh) | 一种测试脚本断言生成方法及装置 | |
CN114968917A (zh) | 一种文件数据快速导入方法及装置 | |
CN114676113A (zh) | 一种基于任务分解的异构数据库迁移方法及*** | |
CN101382891A (zh) | 每日构建日志输出的统计方法及装置 | |
CN113535575A (zh) | 软硬件产品基础环境的基准测试方法及装置 | |
CN112487006A (zh) | 一种动态编辑数据结构并生成数据库表的实现方法 | |
CN112000671A (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 |