一种变动列数据导入数据库的方法与流程

文档序号:12121894阅读:256来源:国知局
一种变动列数据导入数据库的方法与流程

本发明涉及通信信息技术领域,具体地说是一种变动列数据导入数据库的方法。



背景技术:

随着信息系统应用的普及,很多用户数据需要导入到后台数据库中。客户为了填制方便会使用变动列方式填报数据。如某表格所示:前面两列为科目编号和科目名称,比如5011开发成本合计、5011-01土地征用及拆迁补偿款;后边每列为变动的多标题式的分类信息,比如超高层、高层住宅、小高层,其分出的多标题分别为金额、建筑单方、可售单方等。这样的信息如果导入信息系统,往往需要用户先整理成固定列的方式,这样做费时费力,还容易出错,特别是当数据行比较多的时候,工作量巨大。

基于此,现提供一种变动列数据导入数据库的方法,旨在帮助解决从Excel等数据源的变动列数据转换到数据库系统中的问题。



技术实现要素:

本发明的技术任务是针对以上不足之处,提供一种变动列数据导入数据库的方法。

一种变动列数据导入数据库的方法,其实现过程为:

首先识别数据源的列属性,分类设置数据源列和数据库列的对应规则和数据转换规则;

进行数据导入,将变动列导入到数据库中,根据列对应规则确定数据存入数据库的哪列,根据数据转换规则确定数据存储的值;

存储时,数据按块读取并保存,同时将出错信息记录下来,保存结束后一次提示,方便用户一次更正多个错误。

在识别数据源的列属性步骤中,首先识别数据源,该数据源包括Excel数据源,其属性包括页签名称、数据开始行、数据结束行;然后识别列属性,该列属性包括页签名称、数据库表、数据库列、列类型、列标题、列序号,该数据库表是指数据库中对应的表,固定列为主表,变动列为子表,列类型包括变动列前的固定列、变动列、变动列后的固定列,列标题是指变动列后的固定列,列序号是指变动列前的固定列;然后设置数据源一个页签的列信息,该列信息包括列序号、标题格的编号、标题的名称。

变动列前的固定列,用于设置列序号或列标题直接对应数据库的列,非变动列的数据导入仅设置固定列的列属性;该变动列前固定列在数据变动时,其列序号或列标题保持不变,且该固定列的每行数据在数据中存储的是一行数据;变动列是一个或多个列组合在一起的,一组变动列的一行数据对应着固定列的一行数据;变动列后的固定列在数据变动时,列序号发生改变,列标题保持不变;变动列前和变动列后的固定列存储到一个主表中,变动列明细标题的对应数据和非明细标题的变动内容存储到子表中。

在数据导入前,需要设置数据导入对象:数据导入对象用来存储按列对应规则预整理后数据的数据结构,数据导入对象的属性包括:主对象、明细对象,其中,主对象用来存储变动列前固定列和变动列后固定列的信息,该信息包括:读取列序号、对应存储数据库表名、对应存储数据字段名、值转换规则属性;明细对象用来存储变动列信息,该信息包括:对应存储数据库表名、对应存储数据字段名、是否非明细标题、读取列序号、对应存储值、值转换规则;每一组变动列组成一个明细对象,一个主对象下有若干个明细对象,即有多组变动列。

在进行数据导入前,数据导入对象对数据进行整理,其实现流程为:

首先,读取下一条表列属性设置信息,然后进行是否变动列前固定列判断;

进行变动列前固定列对象设置:如果判断为是变动列前固定列,则创建一个数据导入对象主对象,并设置读取列序号为列属性的列序号属性,然后进入读取下一条表列属性设置信息;

进行变动列后固定列对象设置:如果判断为否变动列前固定列,则进入是否变动列判断;如果判断为非变动列,则创建新的主对象,并通过标题判断把变化后的列序号放入该主对象的读取列序号中,然后进入读取下一条表列属性设置信息;

变动列中非明细标题对象设置:如果判断为是变动列,进入是否非明细标题判断,如果判断为非明细标题,则判断是否存在明细对象,如果判断为不存在明细对象,则创建明细对象,根据数据转换规则,把标题的值转换为数据库存储需要的值保存到明细对象;如果判断为存在明细对象,则取到对应明细对象,根据数据转换规则,把标题的值转换为数据库存储需要的值保存到明细对象;读取数据源表列设置,继续判断是否有当前表列特征的标题变动列,如果有则继续判断是否存在明细对象,如果没有,进入读取下一条表列属性设置信息;

变动列中明细标题对象设置:如果判断是明细标题,则判断是否存在明细对象;如果判断为不存在明细对象,则创建明细对象,根据数据转换规则,把符合特征的列序号保存到明细对象的读取列序号属性中;如果判断为存在明细对象,则取到对应明细对象,根据数据转换规则,把符合特征的列序号保存到明细对象的读取列序号属性中;然后,读取数据源表列设置,继续判断是否有当前表列特征的标题变动列,如果有则继续判断是否存在明细对象操作,如果没有,进入读取下一条表列属性设置信息;读取下一条表列属性设置信息后,进行是否有下一条判断,如果有继续执行读取下一条表列属性设置信息,否则,结束数据导入对象整理流程,并获得数据导入对象。

数据导入过程为:

首先,读取数据源的一行记录,判断读取行的值是否全为空或者行号是指定读取的最后一行:如果是,则保存数据,结束流程;如果否,则进入行导入操作;

主数据行信息导入,先创建主数据行,然后根据数据导入对象整理流程的主数据对象,循环每一个对象,把对应列的信息存储到创建的主数据行中;

明细数据行信息导入,先判断数据导入对象中有没有下一个明细对象:如果有下一个明细对象,则创建明细数据行,明细数据行通过相应键和主数据行进行关联,然后获取明细对象中的变动列信息,读取当前数据行中的值,根据列值和数据字段的对应关系,设置明细行数据的值;如果设置完成,再进入判断数据导入对象中有没有下一个明细对象的步骤,取下一个明细对象进行操作;

如果判断数据导入对象中没有下一个明细对象,则判断读取行数是否超过最大需存储行数:如果判断是,则保存数据,然后继续进行数据源行读取操作;如果判断否,继续进行数据源行读取操作。

本发明的一种变动列数据导入数据库的方法和现有技术相比,具有以下有益效果:

本发明的一种变动列数据导入数据库的方法,利用这种设置方法可以实现Excel等数据源的数据转换到数据库系统中,有效的节省数据录入人员的工作量和工作时间,实现复杂数据的快速有效导入业务系统,实用性强,适用范围广泛,具有很好的推广应用价值。

附图说明

附图1是本发明的数据导入对象整理执行示意图。

附图2是本发明的数据导入流程执行示意图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步说明。

如附图所示,本发明提供了一种变动列数据导入数据库的方法,同样也适用于非变动列数据导入的情况,旨在帮助信息系统快速实现从Excel等数据源的数据转换到数据库系统中,方便这些数据在信息系统中的整理和使用。该方法的主要特征在于识别Excel等数据源的列属性,分类设置列和数据库列的对应规则和数据转换规则;数据导入时,根据列对应规则确定数据存入数据库的哪列,根据数据转换规则确定数据存储的值;存储时,数据按块读取并保存,减少一次保存的数量,减少数据库的压力,出错信息记录下来,保存结束后一次提示,方便用户一次更正多个错误。利用这种设置方法可以实现Excel等数据源的数据转换到数据库系统中,有效的节省数据录入人员的工作量和工作时间,实现复杂数据的快速有效导入业务系统。

在本发明中,首先识别Excel等数据源的列属性,分类设置列和数据库列的对应规则:

变动列前的固定列,其不会因变动列的增减而变化列的位置,也不会增减,故可以设置列序号或列标题的直接对应数据库的列。非变动列的数据导入仅设置固定列的列属性即可。

变动列,其会根据数据内容而多列显示,标题可能是多级表头的,有的非明细标题需要根据标题设置对应的数据库列,标题内容存入此列中,明细标题根据内容设置对应的数据库列,数据内容存入此列中。

变动列后的固定列,其会因变动列的增减而变化列的位置,故需要设置标题的内容来对应数据库的列。

根据上面所述的变动列前固定列,数据变动时,固定列的列序号或列标题保持不变。

固定列的每行数据在数据中存储的就是一行数据。

所述的变动列是一个或多个列的组合在一起的。每增加一次变动这个组合的所有列都要出现。

变动列对应的列和数据是按组变化的,客户可以根据需要增减。

一组变动列的一行数据对应着固定列的一行数据。因此,一行固定列的数据对应着变动列的数据是多行的,固定列数据和变动列数据是多对一的关系,需要用固定列的子表保存。

多级表头的变动列,有的非明细标题的内容是变动的,需要存入子表的对应列,有的非明细标题的内容是不变动的,不用处理。明细标题都对应着数据,需要对应子表的数据列。

所述的变动列后的固定列在数据变动时,列序号发生改变,列标题保持不变。

一行数据和变动列前固定列的一行数据是一一对应的,可以存储到一行。

所述数据读取后的结构,固定列(变动列前和变动列后的)存储到一个主表中。

变动列的明细标题的对应数据和非明细标题的变动内容存储到子表中。

表列数据不一定能直接导入数据库,有些表列数据需要转换,其特征在于:

数据库中需要数字、时间、布尔等类型值,导入前需要校验。

数据库中有字典表规定存储的值,导入过程中需要进行值对照转换。

某些字符不能存入数据库中,导入前需要替换。

表列数据导入方式,其特征在于:

当导入数据的量比较大时,分段导入数据,避免出现占用系统过多内存的情况出现。

导入出现错误,记录下该错误信息及数据行,继续执行。最后只有无错误的情况才能导入;有错误,提示带行号的错误信息,方便客户一次查找修正。

本发明的具体实现步骤如下所述:

一、设置本地文件源属性。包括:

Excel等数据源的页签(sheet)、数据开始行、数据结束行等信息。

二、设置列属性。包括:

设置Excel等数据源一个页签(sheet)的列信息,包括:列序号、标题格的编号、标题的名称等。

其中,变动列特征存储的是特征值,形如:

CN3|R4|!备注:当前列后3列第4行标题不是“备注”,此适用于非明细表列是否有变动列的情况。

CN3|R4|^数量:当前列后3列第4行数量开头的,此适用于明细表列是否有变动列的情况。

数据导入前导入对象整理的流程设计,见附图1。流程中最主要的执行规则描述如下:

三、数据导入对象设计:

数据导入对象是用来存储按列属性规则预整理后数据的数据结构,方便数据的导入。数据导入对象的属性包括:主对象、明细对象两个。其中,主对象是用来存储变动列前固定列和变动列后固定列的信息的,其属性包括:读取列序号、对应存储数据库表名、对应存储数据字段名、值转换规则等属性;明细对象是用来存储变动列信息的,其属性包括:对应存储数据库表名、对应存储数据字段名、是否非明细标题、读取列序号、对应存储值、值转换规则等。每一组变动列组成一个明细对象。一个主对象下有多个明细对象,即有多组变动列。

四、数据导入对象整理流程:

首先,读取下一条表列属性设置信息A101,进行,是否变动列前固定列判断A102。

变动列前固定列对象设置。如果A102判断为是,则创建一个数据导入对象主对象A103,并设置读取列序号为列属性的列序号等属性,然后进入读取下一条表列属性设置信息A114。

变动列后固定列对象设置。如果A102判断为否,则进入是否变动列判断A104。如果A104判断为否,则创建新的主对象A105,并通过标题判断把变化后的列序号放入该主对象的读取列序号中,然后,进入读取下一条表列属性设置信息A114。

变动列中非明细标题对象设置。如果A104判断为是,进入是否非明细标题判断A106,如果A106判断为非明细标题,则判断是否存在明细对象A107。如果A107判断为否,则创建明细对象A108,根据数据转换规则,把标题的值转换为数据库存储需要的值保存到明细对象A109;如果A107判断为是,则取到对应明细对象,根据数据转换规则,把标题的值转换为数据库存储需要的值保存到明细对象A109。然后,读取Excel等数据源表列设置,继续判断是否有当前表列特征的标题变动列A110,如果有则继续A107操作,如果没有,进入读取下一条表列属性设置信息A114。

变动列中明细标题对象设置。如果A106判断是明细标题,则判断是否存在明细对象A111。如果A111判断为否,则创建明细对象A108,根据数据转换规则,把符合特征的列序号保存到明细对象的读取列序号属性中A112;如果A111判断为是,则取到对应明细对象,根据数据转换规则,把符合特征的列序号保存到明细对象的读取列序号属性中A112。然后,读取Excel等数据源表列设置,继续判断是否有当前表列特征的标题变动列A113,如果有则继续A111操作,如果没有,进入读取下一条表列属性设置信息A114。读取下一条表列属性设置信息A114后,进行是否有下一条判断A115,如果有继续执行A101,否则,结束数据导入对象整理流程,并获得数据导入对象。

数据导入流程,见附图2。流程中最主要的执行规则描述如下:

首先,读取Excel等数据源的一行记录A201,判断读取行的值是否全为空或者行号是指定读取的最后一行A202。如果A202判断是,则保存数据A210,结束流程。如果A202判断否,则进入行导入操作。

主数据行信息导入,先创建主数据行A203,然后根据数据导入对象整理流程的主数据对象,循环每一个对象,把对应列的信息存储到创建的主数据行中A204。

明细数据行信息导入,先判断数据导入对象中有没有下一个明细对象A205。如果A205判断是,则创建明细数据行A206,明细数据行要通过相应键和主数据行进行关联。然后,获取明细对象中的变动列信息A207,读取当前数据行中的值,根据列值和数据字段的对应关系,设置明细行数据的值A208。如果设置完成,再进入A205,取下一个明细对象进行操作。如果A205判断否,则判断读取行数是否超过最大需存储行数A209。如果A209判断是,则保存数据A210,然后继续进行Excel等数据源行读取操作A201。如果A209判断否,继续进行Excel等数据源行读取操作A201。

通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。

除说明书所述的技术特征外,均为本专业技术人员的已知技术。

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