一种数据源配置转换成SQL的方法及系统与流程

文档序号:17442275发布日期:2019-04-17 04:55阅读:338来源:国知局
一种数据源配置转换成SQL的方法及系统与流程

本发明涉及计算机技术领域,更具体的说,涉及一种数据源配置转换成sql的方法及系统。



背景技术:

在海外大部分国家汇款清算业务中,涉及到的业务处理流程大致相同,但是由于不同国家汇款资金清算业务所使用的数据库结构设计、数据读取以及存储要求不一致,因此导致需要针对不同国家汇款资金清算业务开发多套不同的清算系统。

在清算系统开发过程中,需按照不同清算系统的需求定制、客户化读写数据库所需的sql(structuredquerylanguage,结构化查询语言)语句,并将sql语句硬编码在代码中。由于这些sql语句并不能被其他系统所使用,因此导致即使业务功能相同,开发人员也不得不放弃已经测试完成并投产使用的系统,而重新开发一套系统并测试所有代码。



技术实现要素:

有鉴于此,本发明公开一种数据源配置转换成sql的方法及系统,以实现当业务功能相同而数据处理不同时,无需重新开发一套系统,也即源码无需变动,仅需要修改数据源配置信息中的数据即可,从而大大省去因开发新系统以及测试新开发系统中所有代码带来的繁琐操作。

一种数据源配置转换成sql的方法,包括:

从预先设置的sql数据源配置表读取配置信息,所述配置信息中的配置项包括:数据源id、源数据字段名、源数据表名、目标数据字段名、目标数据表名、筛选条件、可执行完整的sql语句和数据操作类型;

根据所述数据操作类型,采用与所述数据操作类型对应的sql组装规则,生成所述数据源id对应的全部sql语句。

可选的,当所述数据操作类型为sql查询记录数据源配置时,所述根据所述数据操作类型,采用与所述数据操作类型对应的sql组装规则,生成所述数据源id对应的全部sql语句,具体包括:

当所述数据源id为一个时,按照所述配置信息中各个配置项的顺序依次读取每一个配置项;

判断所述筛选条件是否设置;

如果是,则将所述源数据表名和所述筛选条件作为组装条件,将所述源数据表名相同且所述筛选条件相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述源数据表名和所述筛选条件组合在一起的配置的先后顺序依次排列,得到一组sql查询语句;

如果否,则仅将所述源数据表名作为组装条件,将所述源数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述源数据表名的配置顺序依次排列,得到一组sql查询语句。

可选的,还包括:

当所述数据源id为多个时,按照每个数据源id的排列顺序以及每个数据源id中各个配置项的顺序依次读取每一个配置项;

判断所述筛选条件是否设置;

如果是,则将所述数据源id、所述源数据表名和所述筛选条件作为组装条件,将所述数据源id相同、所述源数据表名相同且所述筛选条件相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述数据源id、所述源数据表名和所述筛选条件组合在一起的配置的先后顺序依次排列,得到一组sql查询语句;

如果否,则将所述数据源id和所述源数据表名作为组装条件,将所述数据源id相同和所述源数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述数据源id和所述源数据表名组合在一起的配置的先后顺序依次排列,得到一组sql查询语句。

可选的,当所述数据操作类型为sql新增记录数据源配置时,所述根据所述数据操作类型,采用与所述数据操作类型对应的sql组装规则,生成所述数据源id对应的全部sql语句,具体包括:

当所述数据源id为一个时,按照所述数据源id中各个配置项的顺序依次读取每一个配置项;

将所述目标数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述目标数据表名的配置顺序依次排列,得到一组sql新增记录语句。

可选的,还包括:

当所述数据源id为多个时,按照每个数据源id的排列顺序以及每个数据源id中各个配置项的顺序依次读取每一个配置项;

将所述数据源id和所述目标数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述数据源id和所述目标数据表名组合在一起的配置的的先后顺序依次排列,得到一组sql新增记录语句。

可选的,当所述数据操作类型为sql更新记录数据源配置时,所述根据所述数据操作类型,采用与所述数据操作类型对应的sql组装规则,生成所述数据源id对应的全部sql语句,具体包括:

当所述数据源id为一个时,按照所述配置信息中各个配置项的顺序依次读取每一个配置项;

判断所述筛选条件是否设置;

如果是,则将所述目标数据表名和所述筛选条件作为组装条件,将所述目标数据表名相同且所述筛选条件相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述目标数据表名和所述筛选条件组合在一起的配置的先后顺序依次排列,得到一组sql更新记录语句;

如果否,则仅将所述目标数据表名作为组装条件,将所述目标数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述目标数据表名的配置顺序依次排列,得到一组sql更新语句。

可选的,还包括:

当所述数据源id为多个时,按照每个数据源id的排列顺序以及每个数据源id中各个配置项的顺序依次读取每一个配置项;

判断所述筛选条件是否设置;

如果是,则将所述数据源id、所述目标数据表名和所述筛选条件作为组装条件,将所述数据源id相同、所述目标数据表名相同且所述筛选条件相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述数据源id、所述目标数据表名和所述筛选条件组合在一起的配置的先后顺序依次排列,得到一组sql更新记录语句;

如果否,则将所述数据源id和所述目标数据表名作为组装条件,将所述数据源id相同和所述目标数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述数据源id和所述目标数据表名组合在一起的配置的先后顺序依次排列,得到一组sql更新记录语句。

可选的,还包括:

若源数据和目标数据均未设置,且所述配置信息中单独配置了完整sql语句,则按照所述配置信息中所述数据源id配置的顺序,依次选取所述完整sql语句,并将所述完整sql语句放置在最终生成的所有sql语句的最后执行,其中,所述源数据包括:所述源数据字段名和所述源数据表名,所述目标数据包括:所述目标数据字段名和所述目标数据表名。

可选的,还包括:

当所述数据源id为多个时,若不同的数据源id中配置了相同的目标数据,则按照每个数据源id的排列顺序,将当前数据源id操作所述目标数据的值覆盖所述当前数据源id的前一个数据源id操作所述目标数据的值,其中,所述目标数据包括:目标数据字段名和目标数据表名。

一种数据源配置转换成sql的系统,包括:

信息读取单元,用于从预先设置的sql数据源配置表读取配置信息,所述配置信息中的配置项包括:数据源id、源数据字段名、源数据表名、目标数据字段名、目标数据表名、筛选条件、可执行完整的sql语句和数据操作类型;

sql语句生成单元,用于根据所述数据操作类型,采用与所述数据操作类型对应的sql组装规则,生成所述数据源id对应的全部sql语句。

可选的,所述sql语句生成单元具体包括:

第一读取子单元,用于当所述数据操作类型为sql查询记录数据源配置,且当所述数据源id为一个时,按照所述配置信息中各个配置项的顺序依次读取每一个配置项;

第一判断子单元,用于判断所述筛选条件是否设置;

第一组装子单元,用于在所述第一判断子单元判断为是的情况下,将所述源数据表名和所述筛选条件作为组装条件,将所述源数据表名相同且所述筛选条件相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述源数据表名和所述筛选条件组合在一起的配置的先后顺序依次排列,得到一组sql查询语句;

第二组装子单元,用于在所述第一判断子单元判断为否的情况下,仅将所述源数据表名作为组装条件,将所述源数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述源数据表名的配置顺序依次排列,得到一组sql查询语句。

可选的,还包括:

第二读取子单元,用于当所述数据操作类型为sql查询记录数据源配置,且所述数据源id为多个时,按照每个数据源id的排列顺序以及每个数据源id中各个配置项的顺序依次读取每一个配置项;

第二判断子单元,用于判断所述筛选条件是否设置;

第三组装子单元,用于在所述第二判断子单元判断为是的情况下,将所述数据源id、所述源数据表名和所述筛选条件作为组装条件,将所述数据源id相同、所述源数据表名相同且所述筛选条件相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述数据源id、所述源数据表名和所述筛选条件组合在一起的配置的先后顺序依次排列,得到一组sql查询语句;

第四组装子单元,用于在所述第二判断子单元判断为否的情况下,将所述数据源id和所述源数据表名作为组装条件,将所述数据源id相同和所述源数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述数据源id和所述源数据表名组合在一起的配置的先后顺序依次排列,得到一组sql查询语句。

可选的,所述sql语句生成单元具体包括:

第三读取子单元,用于当所述数据操作类型为sql新增记录数据源配置,且所述数据源id为一个时,按照所述数据源id中各个配置项的顺序依次读取每一个配置项;

第五组装子单元,用于将所述目标数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述目标数据表名的配置顺序依次排列,得到一组sql新增记录语句。

可选的,还包括:

第四读取子单元,用于当所述数据操作类型为sql新增记录数据源配置,且所述数据源id为多个时,按照每个数据源id的排列顺序以及每个数据源id中各个配置项的顺序依次读取每一个配置项;

第六组装子单元,用于将所述目标数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述数据源id和所述目标数据表名组合在一起的配置的的先后顺序依次排列,得到一组sql新增记录语句。

可选的,所述sql语句生成单元具体包括:

第五读取子单元,用于当所述数据操作类型为sql更新记录数据源配置,且所述数据源id为一个时,按照所述配置信息中各个配置项的顺序依次读取每一个配置项;

第三判断子单元,用于判断所述筛选条件是否设置;

第七组装子单元,用于在所述第三判断子单元判断为是的情况下,将所述目标数据表名和所述筛选条件作为组装条件,将所述目标数据表名相同且所述筛选条件相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述目标数据表名和所述筛选条件组合在一起的配置的先后顺序依次排列,得到一组sql更新记录语句;

第八组装子单元,用于在所述第三判断子单元判断为否的情况下,仅将所述目标数据表名作为组装条件,将所述目标数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述目标数据表名的配置顺序依次排列,得到一组sql更新语句。

可选的,还包括:

第六读取子单元,用于当所述数据操作类型为sql更新记录数据源配置,且所述数据源id为多个时,按照每个数据源id的排列顺序以及每个数据源id中各个配置项的顺序依次读取每一个配置项;

第四判断子单元,用于判断所述筛选条件是否设置;

第九组装子单元,用于在所述第四判断子单元判断为是的情况下,将所述数据源id、所述目标数据表名和所述筛选条件作为组装条件,将所述数据源id相同、所述目标数据表名相同且所述筛选条件相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述数据源id、所述目标数据表名和所述筛选条件组合在一起的配置的先后顺序依次排列,得到一组sql更新记录语句;

第十组装子单元,用于在所述第四判断子单元判断为否的情况下,将所述数据源id和所述目标数据表名作为组装条件,将所述数据源id相同和所述目标数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述数据源id和所述目标数据表名组合在一起的配置的先后顺序依次排列,得到一组sql更新记录语句。

可选的,还包括:

直接选取单元,用于若源数据和目标数据均未设置,且所述配置信息中单独配置了完整sql语句,则按照所述配置信息中所述数据源id配置的顺序,依次选取所述完整sql语句,并将所述完整sql语句放置在最终生成的所有sql语句的最后执行,其中,所述源数据包括:所述源数据字段名和所述源数据表名,所述目标数据包括:所述目标数据字段名和所述目标数据表名。

可选的,还包括:

覆盖单元,用于当所述数据源id为多个时,若不同的数据源id中配置了相同的目标数据,则按照每个数据源id的排列顺序,将当前数据源id操作所述目标数据的值覆盖所述当前数据源id的前一个数据源id操作所述目标数据的值,其中,所述目标数据包括:目标数据字段名和目标数据表名。

从上述的技术方案可知,本发明公开了一种数据源配置转换成sql的方法及系统,从sql数据源配置表读取配置信息,该配置信息中的配置项包括:数据源id、源数据字段名、源数据表名、目标数据字段名、目标数据表名、筛选条件、可执行完整的sql语句和数据操作类型;然后基于数据操作类型,采用与数据操作类型对应的sql组装规则,来生成数据源id对应的全部sql语句。由于本发明针对相同的数据操作类型(也即业务功能相同)采用了相同的sql组装规则,因此,当业务功能相同而数据处理不同时,无需重新开发一套系统,也即源码无需变动,仅需要修改数据源配置信息中的数据即可,从而大大省去了因开发新系统以及测试新开发系统中所有代码带来的繁琐操作。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据公开的附图获得其他的附图。

图1为本发明实施例公开的一种数据源配置转换成sql的方法流程图;

图2为本发明实施例公开的一种当数据操作类型为sql查询记录数据源配置时,根据数据操作类型,采用与数据操作类型对应的sql组装规则,生成数据源id对应的全部sql语句的方法流程图;

图3为本发明实施例公开的一种数据操作类型为sql查询记录数据源配置时读取的配置信息示意图;

图4为本发明实施例公开的一种当数据操作类型为sql新增记录数据源配置时,根据数据操作类型,采用与数据操作类型对应的sql组装规则,生成数据源id对应的全部sql语句的方法流程图;

图5为本发明实施例公开的一种数据操作类型为sql新增记录数据源配置时读取的配置信息示意图;

图6为本发明实施例公开的一种当数据操作类型为sql更新记录数据源配置时,根据数据操作类型,采用与数据操作类型对应的sql组装规则,生成数据源id对应的全部sql语句的方法流程图;

图7为本发明实施例公开的一种数据操作类型为sql更新记录数据源配置时读取的配置信息示意图;

图8为本发明实施例公开的一种数据源配置转换成sql的系统结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种数据源配置转换成sql的方法及系统,从sql数据源配置表读取配置信息,该配置信息中的配置项包括:数据源id、源数据字段名、源数据表名、目标数据字段名、目标数据表名、筛选条件、可执行完整的sql语句和数据操作类型;然后基于数据操作类型,采用与数据操作类型对应的sql组装规则,来生成数据源id对应的全部sql语句。由于本发明针对相同的数据操作类型(也即业务功能相同)采用了相同的sql组装规则,因此,当业务功能相同而数据处理不同时,无需重新开发一套系统,也即源码无需变动,仅需要修改数据源配置信息中的数据即可,从而大大省去了因开发新系统以及测试新开发系统中所有代码带来的繁琐操作。进一步,当数据处理出现问题时,同样仅需要修改数据源配置,无需重新编译程序或重启系统,并且可以即时生效,因此大大减少了开发人员在处理数据出现的问题时的工作量。

参见图1,本发明一实施例公开的一种数据源配置转换成sql的方法流程图,该方法包括步骤:

步骤s101、从预先设置的sql数据源配置表读取配置信息;

sql数据源配置表中记录有根据预设配置规则所配置的清算系统所使用的全部sql操作信息。

sql数据源配置表中的配置项包括:数据源id、源数据字段名、源数据表名、目标数据字段名、目标数据表名、筛选条件(即where筛选条件)、可执行完整的sql语句和数据操作类型。

其中,一个数据源id包含一组sql配置项,一组sql配置项包括一个或多个sql语句。

数据操作类型包括:q:sql查询记录数据源配置;i:sql新增记录数据源配置;u:sql更新记录数据源配置。

需要说明的是,sql数据源配置表中,在源码中使用的变量名(非sql表字段名)需用“[]”标识。

本实施例从sql数据源配置表读取的配置信息具体也包括:数据源id、源数据字段名、源数据表名、目标数据字段名、目标数据表名、筛选条件、可执行完整的sql语句和数据操作类型。

需要特别说明的是,不同的数据操作类型对应的配置信息中的内容可能不同,比如,数据操作类型为sql新增记录数据源配置时,源数据表名内容则为“空”,数据操作类型为sql查询记录数据源配置时,源数据表名内容不为“空”。

基于sql数据源配置表,将数据源配置转换成sql的组装原则为:源数据(包括:源数据字段名和源数据表名)和目标数据(包括:目标数据字段名和目标数据表名)只存在一种单向关系,即当源数据为数据库表字段时,将从源数据表字段读取值放到目标数据所执行的程序变量中;反之,当源数据为程序变量时,将程序变量的值存放(新增/insert或更新/update)到目标数据所指向的数据库表字段中,基于上述原则组装出可执行的sql语句。

步骤s102、根据数据操作类型,采用与数据操作类型对应的sql组装规则,生成数据源id对应的全部sql语句。

本发明针对相同的数据操作类型,采用了相同的sql组装规则,当业务功能相同而数据处理不同时,无需重新开发一套系统,也即源码无需变动,仅需要修改数据源配置信息中的数据即可。

其中,在拥有where筛选条件的情况下,生成的sql语句将在语句末尾拼接where筛选条件;在读取的配置信息中,若没有配置源数据及目标数据,且单独配置了完整sql语句(该完整sql语句中也应包含前面要求的源数据和目标数据的相关信息),则可以直接执行该完整sql语句,而不需拼接。

为了减少sql语句的执行数量以提高执行效率,可以对配置信息中的各个配置项进行分组归类组装成sql语句,以减少数据库i/o(input/output,输入/输出),优化数据库操作。

综上可知,本发明公开的数据源配置转换成sql的方法,从sql数据源配置表读取配置信息,该配置信息中的配置项包括:数据源id、源数据字段名、源数据表名、目标数据字段名、目标数据表名、筛选条件、可执行完整的sql语句和数据操作类型;然后基于数据操作类型,采用与数据操作类型对应的sql组装规则,来生成数据源id对应的全部sql语句。由于本发明针对相同的数据操作类型(也即业务功能相同)采用了相同的sql组装规则,因此,当业务功能相同而数据处理不同时,无需重新开发一套系统,也即源码无需变动,仅需要修改数据源配置信息中的数据即可,从而大大省去了因开发新系统以及测试新开发系统中所有代码带来的繁琐操作。进一步,当数据处理出现问题时,同样仅需要修改数据源配置,无需重新编译程序或重启系统,并且可以即时生效,因此大大减少了开发人员在处理数据出现的问题时的工作量。

为方便理解,下面详细说明数据源配置转换成sql的方法,具体如下:

参见图2,本发明一实施例公开的一种当数据操作类型为sql查询记录数据源配置时,根据数据操作类型,采用与数据操作类型对应的sql组装规则,生成数据源id对应的全部sql语句的方法流程图,该方法包括步骤:

步骤s201、判断数据源id为一个还是多个;

步骤s202、当数据源id为一个时,按照配置信息中各个配置项的顺序依次读取每一个配置项;

具体的,参见图3,本发明一实施例公开的一种数据操作类型为sql查询记录数据源配置时读取的配置信息示意图,当数据源id为00001时,按照图3所示的配置项的顺序,即源数据字段名、源数据表名、目标数据字段名、目标数据表名、筛选条件(即where筛选条件)、可执行完整的sql语句和数据操作类型,依次读取每一个配置项。

步骤s203、判断筛选条件是否设置,如果是,则执行步骤s204,如果否,则执行步骤s205;

需要说明的是,筛选条件是否设置指的是筛选条件的设置内容是否为空。

步骤s204、将源数据表名和筛选条件作为组装条件,得到一组sql查询语句;

具体的,将源数据表名和筛选条件作为组装条件,将源数据表名相同且筛选条件相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照配置信息中源数据表名和筛选条件组合在一起的配置的先后顺序依次排列,得到一组sql查询语句;

以数据库语法为oracle语法为例,来说明组装得到sql查询语句时,各个配置项依次排列顺序,具体如下:

select+源数据字段名组(分配到同一组的数据表字段名,多个用英文逗号隔开)+from+源数据表名+into+目标数据字段名组(分配到同一组的源码中的变量名,多个将用英文逗号隔开)+where+where筛选条件

其中,当where筛选条件的配置内容不为空时,需要将where筛选条件拼接在整个sql查询语句末尾。

步骤s205、仅将源数据表名作为组装条件,得到一组sql查询语句。

具体的,仅将源数据表名作为组装条件,将源数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照配置信息中源数据表名的配置顺序依次排列,得到一组sql查询语句。

其中,当where筛选条件未设置时,则在整个sql查询语句的末尾不拼接where筛选条件。

步骤s206、当数据源id为多个时,按照每个数据源id的排列顺序以及每个数据源id中各个配置项的顺序依次读取每一个配置项;

步骤s207、判断筛选条件是否设置,如果是,则执行步骤s208,如果否,则执行步骤s209;

步骤s208、将数据源id、源数据表名和筛选条件作为组装条件,得到一组sql查询语句;

具体的,将数据源id、源数据表名和筛选条件作为组装条件,将数据源id相同、源数据表名相同且筛选条件相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中将数据源id、源数据表名和筛选条件组合在一起的配置的先后顺序依次排列,得到一组sql查询语句。

步骤s209、将数据源id和源数据表名作为组装条件,得到一组sql查询语句。

具体的,将数据源id和源数据表名作为组装条件,将数据源id相同和源数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中数据源id和源数据表名组合在一起的配置的先后顺序依次排列,得到一组sql查询语句。

需要说明的是,当存在多个数据源id时,若不同的数据源id中配置了相同的目标数据,则按照每个数据源id的排列顺序,将当前数据源id操作所述目标数据的值覆盖当前数据源id的前一个数据源id操作目标数据的值,其中,目标数据包括:目标数据字段名和目标数据表名。

根据图2所示的实施例,对图3中的数据进行处理后,最后可以得到如下一组sql查询语句:

1、selectfrom_acct,to_acctinto

[from_acct_data],[to_acct_data]fromoutward_ctrlwheretran_id=[tran_id]

2、selectcurrency,tran_typeinto

[currency_data],[tran_type_data]fromoutward_ctrlwheretran_id1=[tran_id]

3、select‘1’into[tran_flag_data]fromdual

4、selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')into

[tran_time_data]fromdual

综上可知,本发明针对数据操作类型为sql查询记录数据源配置,采用了相同的sql组装规则,因此,当业务功能为sql查询记录数据源配置时,若数据处理不同时,无需重新开发一套系统,也即源码无需变动,仅需要修改数据源配置信息中的数据即可,从而大大省去了因开发新系统以及测试新开发系统中所有代码带来的繁琐操作。进一步,当数据处理出现问题时,同样仅需要修改数据源配置,无需重新编译程序或重启系统,并且可以即时生效,因此大大减少了开发人员在处理数据出现的问题时的工作量。

参见图4,本发明一实施例公开的一种当数据操作类型为sql新增记录数据源配置时,根据数据操作类型,采用与数据操作类型对应的sql组装规则,生成数据源id对应的全部sql语句的方法流程图,该方法包括步骤:

步骤s301、判断数据源id为一个还是多个;

步骤s302、当数据源id为一个时,按照数据源id中各个配置项的顺序依次读取每一个配置项;

具体的,参见图5,本发明一实施例公开的一种数据操作类型为sql新增记录数据源配置时读取的配置信息示意图,当数据源id为00001时,按照图5所示的配置项的顺序,即源数据字段名、源数据表名、目标数据字段名、目标数据表名、筛选条件(即where筛选条件)、可执行完整的sql语句和数据操作类型,依次读取每一个配置项。

步骤s303、将目标数据表名作为组装条件,得到一组sql新增记录语句;

具体的,将目标数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中目标数据表名的配置顺序依次排列,得到一组sql新增记录语句。

以数据库语法为oracle语法为例,来说明组装得到sql查询语句时,各个配置项依次排列顺序,具体如下:

insertinto+目标数据表名+(+目标数据字段名组(分配到同一组的数据表字段名,多个用英文逗号隔开)+)+values+(+源数据字段名(分配到同一组的源码中的变量名,多个用英文逗号隔开)+)

步骤s304、当数据源id为多个时,按照每个数据源id的排列顺序以及每个数据源id中各个配置项的顺序依次读取每一个配置项;

步骤s305、将目标数据表名作为组装条件,得到一组sql新增记录语句。

具体的,将数据源id和目标数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照配置信息中数据源id和目标数据表名组合在一起的配置的先后顺序依次排列,得到一组sql新增记录语句。

需要说明的是,在读取的配置信息中,若没有配置源数据及目标数据,且单独配置了完整sql语句(该完整sql语句中也应包含前面要求的源数据和目标数据的相关信息),则可以直接执行该完整sql语句,并放置在最终生成的所有sql语句的最后执行。

根据图4所示的步骤,对图5中的数据进行处理后,最后可以得到如下一组sql新增记录语句:

1、insertintooutward_ctrl

(from_acct,to_acct,currency,tran_type)values

([from_acct_data],[to_acct_data],[currency_data],'00')

2、insertintooutward_ctrl(tran_flag)values

([tran_flag_data])

综上可知,本发明针对数据操作类型为sql新增记录数据源配置,采用了相同的sql组装规则,因此,当业务功能为sql新增记录数据源配置时,若数据处理不同时,无需重新开发一套系统,也即源码无需变动,仅需要修改数据源配置信息中的数据即可,从而大大省去了因开发新系统以及测试新开发系统中所有代码带来的繁琐操作。进一步,当数据处理出现问题时,同样仅需要修改数据源配置,无需重新编译程序或重启系统,并且可以即时生效,因此大大减少了开发人员在处理数据出现的问题时的工作量。

参见图6,本发明一实施例公开的一种当数据操作类型为sql更新记录数据源配置时,根据数据操作类型,采用与数据操作类型对应的sql组装规则,生成数据源id对应的全部sql语句的方法流程图,该方法包括步骤:

步骤s401、判断数据源id为一个还是多个;

步骤s402、当数据源id为一个时,按照所述配置信息中各个配置项的顺序依次读取每一个配置项;

具体的,参见图7,本发明一实施例公开的一种数据操作类型为sql更新记录数据源配置时读取的配置信息示意图,当数据源id为00001时,按照图7所示的配置项的顺序,即源数据字段名、源数据表名、目标数据字段名、目标数据表名、筛选条件(即where筛选条件)、可执行完整的sql语句和数据操作类型,依次读取每一个配置项。

步骤s403、判断筛选条件是否设置,如果是,则执行步骤s404,如果否,则执行步骤s405;

步骤s404、将目标数据表名和筛选条件作为组装条件,得到一组sql更新记录语句;

具体的,将目标数据表名和筛选条件作为组装条件,将所述目标数据表名相同且所述筛选条件相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中目标数据表名和筛选条件组合在一起的配置的先后顺序依次排列,得到一组sql更新记录语句。

以数据库语法为oracle语法为例,来说明组装得到sql更新语句时,各个配置项依次排列顺序,具体如下:

update+目标数据表名+set+目标数据字段名=源数据字段名(同一条配置记录的目标数据字段名和源数据字段名用“=”拼接成赋值语句,多条配置则拼接多组赋值语句,用英文逗号隔开)+where+where筛选条件

步骤s405、仅将目标数据表名作为组装条件,得到一组sql更新语句。

具体的,仅将目标数据表名作为组装条件,将目标数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中目标数据表名的配置顺序依次排列,得到一组sql更新语句。

需要说明的是,当where筛选条件未设置时,则在整个sql查询语句的末尾不拼接where筛选条件。

步骤s406、当数据源id为多个时,按照每个数据源id的排列顺序以及每个数据源id中各个配置项的顺序依次读取每一个配置项;

步骤s407、判断筛选条件是否设置,如果是,则执行步骤s408,如果否,则执行步骤s409;

步骤s408、将数据源id、目标数据表名和筛选条件作为组装条件,得到一组sql更新记录语句;

具体的,将数据源id、目标数据表名和筛选条件作为组装条件,将所述数据源id相同、所述目标数据表名相同且所述筛选条件相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中数据源id、目标数据表名和筛选条件组合在一起的配置的先后顺序依次排列,得到一组sql更新记录语句。

步骤s409、将数据源id和目标数据表名作为组装条件,得到一组sql更新记录语句。

具体的,将数据源id和目标数据表名作为组装条件,将所述数据源id相同和所述目标数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中数据源id和目标数据表名组合在一起的配置的先后顺序依次排列,得到一组sql更新记录语句。

需要说明的是,当存在多个数据源id时,若不同的数据源id中配置了相同的目标数据,则按照每个数据源id的排列顺序,将当前数据源id操作所述目标数据的值覆盖当前数据源id的前一个数据源id操作目标数据的值,其中,目标数据包括:目标数据字段名和目标数据表名。

根据图6所示的实施例,对图7中的数据进行处理后,最后可以得到如下一组sql更新记录语句:

1、updateoutward_ctrlset

from_acct=[from_acct_data],to_acct=[to_acct_data]wheretran_id=[tran_id]

2、updateoutward_ctrlset

currency=[currency_data],tran_type='01'where

tran_id1=[tran_id]

3、updateoutward_ctrlsettran_flag=[tran_flag_data]wheretran_id=[tran_id]

综上可知,本发明针对数据操作类型为sql更新记录数据源配置,采用了相同的sql组装规则,因此,当业务功能为sql更新记录数据源配置时,若数据处理不同时,无需重新开发一套系统,也即源码无需变动,仅需要修改数据源配置信息中的数据即可,从而大大省去了因开发新系统以及测试新开发系统中所有代码带来的繁琐操作。进一步,当数据处理出现问题时,同样仅需要修改数据源配置,无需重新编译程序或重启系统,并且可以即时生效,因此大大减少了开发人员在处理数据出现的问题时的工作量。

需要说明的是,对于上述各个实施例,若源数据和目标数据均未设置,且配置信息中单独配置了完整sql语句,则按照配置信息中数据源id配置的顺序,依次选取完整sql语句,并将完整sql语句放置在最终生成的所有sql语句的最后执行,其中,源数据包括:源数据字段名和源数据表名,目标数据包括:目标数据字段名和目标数据表名。

上述各个实施例中,当数据源id为多个时,若不同的数据源id中配置了相同的目标数据,则按照每个数据源id的排列顺序,将当前数据源id操作所述目标数据的值覆盖当前数据源id的前一个数据源id操作目标数据的值,其中,目标数据包括:目标数据字段名和目标数据表名。

在实际应用中,根据上述数据源配置方法及sql组装规则,使用任意语言开发程序可以实现数据源配置与sql语句之间的转换。

对于新增业务流程,新增业务流程与数据源id的关联关系配置表可以配置如下:

流程id(流程的唯一标识号),数据源id(可配置多个,用英文逗号隔开)

在使用任意语言开发业务系统程序时,读取新增业务流程与数据源id的关联关系配置表,在调用每个流程时执行其对应的一组数据源id,执行完毕后,所使用的变量将被赋值(查询模式)或者数据库字段值将被修改(新增或更新模式)。变量(带[])的赋值处理由不同的编程语言各自实现。

与上述方法实施例相对应,本发明还公开了一种数据源配置转换成sql的系统。

参见图8,本发明一实施例公开的一种数据源配置转换成sql的系统结构示意图,该系统包括:

信息读取单元501,用于从预先设置的sql数据源配置表读取配置信息,所述配置信息中的配置项包括:数据源id、源数据字段名、源数据表名、目标数据字段名、目标数据表名、筛选条件、可执行完整的sql语句和数据操作类型;

sql数据源配置表中记录有根据预设配置规则所配置的清算系统所使用的全部sql操作信息。

sql数据源配置表中的配置项包括:数据源id、源数据字段名、源数据表名、目标数据字段名、目标数据表名、筛选条件(即where筛选条件)、可执行完整的sql语句和数据操作类型。

其中,一个数据源id包含一组sql配置项,一组sql配置项包括一个或多个sql语句。

数据操作类型包括:q:sql查询记录数据源配置;i:sql新增记录数据源配置;u:sql更新记录数据源配置。

需要说明的是,sql数据源配置表中,在源码中使用的变量名(非sql表字段名)需用“[]”标识。

sql语句生成单元502,用于根据所述数据操作类型,采用与所述数据操作类型对应的sql组装规则,生成所述数据源id对应的全部sql语句。

本发明针对相同的数据操作类型,采用了相同的sql组装规则,当业务功能相同而数据处理不同时,无需重新开发一套系统,也即源码无需变动,仅需要修改数据源配置信息中的数据即可。

其中,在拥有where筛选条件的情况下,生成的sql语句将在语句末尾拼接where筛选条件;在读取的配置信息中,若没有配置源数据及目标数据,且单独配置了完整sql语句(该完整sql语句中也应包含前面要求的源数据和目标数据的相关信息),则可以直接执行该完整sql语句,而不需拼接。

为了减少sql语句的执行数量以提高执行效率,可以对配置信息中的各个配置项进行分组归类组装成sql语句,以减少数据库i/o(input/output,输入/输出),优化数据库操作。

综上可知,本发明公开的数据源配置转换成sql的系统,从sql数据源配置表读取配置信息,该配置信息中的配置项包括:数据源id、源数据字段名、源数据表名、目标数据字段名、目标数据表名、筛选条件、可执行完整的sql语句和数据操作类型;然后基于数据操作类型,采用与数据操作类型对应的sql组装规则,来生成数据源id对应的全部sql语句。由于本发明针对相同的数据操作类型(也即业务功能相同)采用了相同的sql组装规则,因此,当业务功能相同而数据处理不同时,无需重新开发一套系统,也即源码无需变动,仅需要修改数据源配置信息中的数据即可,从而大大省去了因开发新系统以及测试新开发系统中所有代码带来的繁琐操作。进一步,当数据处理出现问题时,同样仅需要修改数据源配置,无需重新编译程序或重启系统,并且可以即时生效,因此大大减少了开发人员在处理数据出现的问题时的工作量。

为方便理解,下面详细说明数据源配置转换成sql的过程。

(一)若数据操作类型为sql查询记录数据源配置

sql语句生成单元502具体包括:

第一读取子单元,用于当所述数据操作类型为sql查询记录数据源配置,且当所述数据源id为一个时,按照所述配置信息中各个配置项的顺序依次读取每一个配置项;

第一判断子单元,用于判断所述筛选条件是否设置;

第一组装子单元,用于在所述第一判断子单元判断为是的情况下,将所述源数据表名和所述筛选条件作为组装条件,将所述源数据表名相同且所述筛选条件相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述源数据表名和所述筛选条件组合在一起的配置的先后顺序依次排列,得到一组sql查询语句;

第二组装子单元,用于在所述第一判断子单元判断为否的情况下,仅将所述源数据表名作为组装条件,将所述源数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述源数据表名的配置顺序依次排列,得到一组sql查询语句;

第二读取子单元,用于当所述数据操作类型为sql查询记录数据源配置,且所述数据源id为多个时,按照每个数据源id的排列顺序以及每个数据源id中各个配置项的顺序依次读取每一个配置项;

第二判断子单元,用于判断所述筛选条件是否设置;

第三组装子单元,用于在所述第二判断子单元判断为是的情况下,将所述数据源id、所述源数据表名和所述筛选条件作为组装条件,将所述数据源id相同、所述源数据表名相同且所述筛选条件相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述数据源id、所述源数据表名和所述筛选条件组合在一起的配置的先后顺序依次排列,得到一组sql查询语句;

第四组装子单元,用于在所述第二判断子单元判断为否的情况下,将所述数据源id和所述源数据表名作为组装条件,将所述数据源id相同和所述源数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述数据源id和所述源数据表名组合在一起的配置的先后顺序依次排列,得到一组sql查询语句。

需要说明的是,当数据操作类型为sql查询记录数据源配置时,sql语句生成单元502的具体工作原理请参见方法实施例对应部分,此处不再赘述。

综上可知,本发明针对数据操作类型为sql查询记录数据源配置,采用了相同的sql组装规则,因此,当业务功能为sql查询记录数据源配置时,若数据处理不同时,无需重新开发一套系统,也即源码无需变动,仅需要修改数据源配置信息中的数据即可,从而大大省去了因开发新系统以及测试新开发系统中所有代码带来的繁琐操作。进一步,当数据处理出现问题时,同样仅需要修改数据源配置,无需重新编译程序或重启系统,并且可以即时生效,因此大大减少了开发人员在处理数据出现的问题时的工作量。

(二)若数据操作类型为sql新增记录数据源配置

sql语句生成单元502具体包括:

第三读取子单元,用于当所述数据操作类型为sql新增记录数据源配置,且所述数据源id为一个时,按照所述数据源id中各个配置项的顺序依次读取每一个配置项;

第五组装子单元,用于将所述目标数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述目标数据表名的配置顺序依次排列,得到一组sql新增记录语句;

第四读取子单元,用于当所述数据操作类型为sql新增记录数据源配置,且所述数据源id为多个时,按照每个数据源id的排列顺序以及每个数据源id中各个配置项的顺序依次读取每一个配置项;

第六组装子单元,用于将所述目标数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述数据源id和所述目标数据表名组合在一起的配置的的先后顺序依次排列,得到一组sql新增记录语句。

需要说明的是,当数据操作类型为sql新增记录数据源配置时,sql语句生成单元502的具体工作原理请参见方法实施例对应部分,此处不再赘述。

综上可知,本发明针对数据操作类型为sql新增记录数据源配置,采用了相同的sql组装规则,因此,当业务功能为sql新增记录数据源配置时,若数据处理不同时,无需重新开发一套系统,也即源码无需变动,仅需要修改数据源配置信息中的数据即可,从而大大省去了因开发新系统以及测试新开发系统中所有代码带来的繁琐操作。进一步,当数据处理出现问题时,同样仅需要修改数据源配置,无需重新编译程序或重启系统,并且可以即时生效,因此大大减少了开发人员在处理数据出现的问题时的工作量。

(三)若数据操作类型为sql更新记录数据源配置

sql语句生成单元502具体包括:

第五读取子单元,用于当所述数据操作类型为sql更新记录数据源配置,且所述数据源id为一个时,按照所述配置信息中各个配置项的顺序依次读取每一个配置项;

第三判断子单元,用于判断所述筛选条件是否设置;

第七组装子单元,用于在所述第三判断子单元判断为是的情况下,将所述目标数据表名和所述筛选条件作为组装条件,将所述目标数据表名相同且所述筛选条件相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述目标数据表名和所述筛选条件组合在一起的配置的先后顺序依次排列,得到一组sql更新记录语句;

第八组装子单元,用于在所述第三判断子单元判断为否的情况下,仅将所述目标数据表名作为组装条件,将所述目标数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述目标数据表名的配置顺序依次排列,得到一组sql更新语句;

第六读取子单元,用于当所述数据操作类型为sql更新记录数据源配置,且所述数据源id为多个时,按照每个数据源id的排列顺序以及每个数据源id中各个配置项的顺序依次读取每一个配置项;

第四判断子单元,用于判断所述筛选条件是否设置;

第九组装子单元,用于在所述第四判断子单元判断为是的情况下,将所述数据源id、所述目标数据表名和所述筛选条件作为组装条件,将所述数据源id相同、所述目标数据表名相同且所述筛选条件相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述数据源id、所述目标数据表名和所述筛选条件组合在一起的配置的先后顺序依次排列,得到一组sql更新记录语句;

第十组装子单元,用于在所述第四判断子单元判断为否的情况下,将所述数据源id和所述目标数据表名作为组装条件,将所述数据源id相同和所述目标数据表名相同的字段组装到同一个sql语句上,并将组装得到的所有的sql语句按照所述配置信息中所述数据源id和所述目标数据表名组合在一起的配置的先后顺序依次排列,得到一组sql更新记录语句。

需要说明的是,当数据操作类型为sql更新记录数据源配置时,sql语句生成单元502的具体工作原理请参见方法实施例对应部分,此处不再赘述。

综上可知,本发明针对数据操作类型为sql更新记录数据源配置,采用了相同的sql组装规则,因此,当业务功能为sql更新记录数据源配置时,若数据处理不同时,无需重新开发一套系统,也即源码无需变动,仅需要修改数据源配置信息中的数据即可,从而大大省去了因开发新系统以及测试新开发系统中所有代码带来的繁琐操作。进一步,当数据处理出现问题时,同样仅需要修改数据源配置,无需重新编译程序或重启系统,并且可以即时生效,因此大大减少了开发人员在处理数据出现的问题时的工作量。

为进一步优化上述实施例,数据源配置转换成sql的系统还可以包括:

直接选取单元,用于若源数据和目标数据均未设置,且所述配置信息中单独配置了完整sql语句,则按照所述配置信息中数据源id配置的顺序,依次选取所述完整sql语句,并将所述完整sql语句放置在最终生成的所有sql语句的最后执行,其中,所述源数据包括:所述源数据字段名和所述源数据表名,所述目标数据包括:所述目标数据字段名和所述目标数据表名。

为进一步优化上述实施例,数据源配置转换成sql的系统还可以包括:

覆盖单元,用于当所述数据源id为多个时,若不同的数据源id中配置了相同的目标数据,则按照每个数据源id的排列顺序,将当前数据源id操作所述目标数据的值覆盖所述当前数据源id的前一个数据源id操作所述目标数据的值,其中,所述目标数据包括:目标数据字段名和目标数据表名。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1