发明内容
有鉴于此,本发明的目的在于提供一种对数据表进行转换的方法及装置,以解决现有技术消耗数据库资源多、效率低的问题。
为实现上述目的,本发明提供了如下方案:
一种对数据表进行转换的方法,将业务前端数据库中的数据表同步至ETL数据库中后,包括:
将所述数据表中待转换字段的数据从ETL数据库导出,并生成预置格式的文本文件;
将所述预置格式的文本文件转换为目标格式的文本文件;
将所述目标格式的文本文件导入到目标数据仓库中。
其中,将所述数据表中待转换字段的数据导出之前,还包括:
判断所述待转换字段的数据是否为空,如果否,触发将该数据导出的步骤;如果是,将该数据丢弃。
其中,所述生成预置格式的文本文件包括:
将所述待转换字段的数据利用预定符号隔开。
其中,将所述预置格式的文本文件转换为目标格式的文本文件包括:
根据所述预置格式的文本文件中的预定符号,对所述预置格式的文本文件进行拆分,生成目标格式的文本文件。
其中,将所述目标格式的文本文件导入到目标数据仓库中包括:
将所述目标格式的文本文件导入到ETL数据库中的预置数据表中,再由ETL数据库将该预置数据表同步至目标数据仓库中。
其中,将从ETL数据库导出并生成的文本文件保存在计算机硬盘中,并由操作系统从硬盘读取来完成转换。
一种对数据表进行转换的装置,包括:
导出单元,用于将所述数据表中待转换字段的数据从ETL数据库导出;
文本文件生成单元,用于将从ETL数据库导出的数据生成预置格式的文本文件;
转换单元,用于将所述预置格式的文本文件转换为目标格式的文本文件;
导入单元,用于将所述目标格式的文本文件导入到目标数据仓库中。
其中,还包括:
判断单元,用于判断所述待转换字段的数据是否为空,如果否,触发所述导出单元;如果是,将该数据丢弃
其中,
所述文本文件生成单元在生成预置格式的文本文件时,将数据表中待转换字段的数据利用预定符号隔开。
其中,
所述转换单元根据所述预置格式的文本文件中的预定符号,对所述预置格式的文本文件进行拆分,生成目标格式的文本文件。
其中,
所述导入单元先将所述目标格式的文本文件导入到ETL数据库中的预置数据表中,再由ETL数据库将该预置数据表同步至目标数据仓库中。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
首先,本发明将所述待处理的数据表中待转换的字段导出成预置格式的文本文件;将所述预置格式的文本文件转换为目标格式的文本文件;再将该目标格式的文本文件导入到数据仓库中。该方法使得数据表的转换过程从传统的ETL转换过程中分离出来,降低了数据库服务器的性能负荷,使得数据仓库能够更专注于业务应用的服务,而不是耗费大量资源在ETL转换过程中。
其次,由于转换的过程是单独进行的,可以很方便地对转换的程序进行优化,使得能够快速地完成转换,并将转换完成的文本文件装载至数据仓库,有效地提升了转换的效率,能够为数据仓库的应用和商业决策提供更及时稳定的支持。
具体实施方式
本发明提供了一种对数据表进行转换的方法,该方法将对数据表转换的过程从传统的ETL转换过程中分离出来,在数据库之外来单独完成,例如,在实际应用中可以将待转换的数据导出到计算机硬盘或磁盘等其他存储工具上,然后在计算机操作系统上来完成转换,为方便起见,下面以将数据导出到计算机硬盘上为例,对本发明提供的方法进行详细地描述。
实施例、参见图2,在本发明实施例中,将业务前端数据库U201中的数据表同步至ETL服务器上的数据库U202中之后,该方法将需要转换字段的数据导出成文本文件,并将此文本文件存储在计算机硬盘U204上,再利用自编写的程序对该文本文件进行处理,转换成符合特定格式的文本文件,最后将处理好的文本文件导入到数据仓库U203中,其中导出之后的步骤都是在计算机操作系统上单独完成的,从而使得转换的过程从传统的ETL转换过程中分离出来,以减轻数据库的负荷。下面结合实施例对本发明提供的方法进行详细的描述。
参见图3,本发明实施例提供的对数据表中的字段进行转换的方法包括以下步骤:
S301:将业务前端数据库中待处理的数据表同步至ETL数据库中;
例如,在业务前端数据库中存在一张数据表,该数据表的结构如表1所示:
表1
产品ID |
产品属性 |
其他字段...... |
100001 |
20060:27993;21541:38487;20055:20717;32706:20684 |
...... |
在这张表中,用产品ID字段存放特定对象的ID,用产品属性字段存储特定对象的某些属性。这里面根据特定的符号将一系列定义好的产品属性值组合在一起存放,比如表1中,将每个对象的ID中的每个不同属性用分号进行分隔,每个对象的属性又用冒号分隔成两个部分,前面一部分表示属性ID值,后面一部分表示特定属性名称值;
本实施例中,产品ID字段和产品属性字段只是一个示例,根据特定业务需求可能会有不同的名称,不过原理是一样的。
S302:将所述数据表中待转换字段的数据,从ETL数据库导出成预置格式的文本文件,并将此文本文件存储在计算机硬盘上;
其中,可以利用自编写的程序将数据表中需要转换的字段导出成预置格式的文本文件;
其中,待转换字段是指在实际应用中需要转换的字段,比如在此例中,只需要转换产品ID字段和产品属性字段,则在本步骤中就只将这两个字段导出成文本文件。当需要转换的字段中某些数据的代码表示值为空时,本发明实施例中将丢弃该数据,例如,在产品属性这一字段中,某个属性的属性值为空,则丢弃该属性。因此,在本发明的优选实施例中,在将所述数据表中待转换字段的数据导出之前还包括:判断所述数据表待转换的字段中,各数据的代码表示值是否为空,如果否,触发将该数据导出成文本文件的步骤;如果是,将该数据丢弃。当然,在实际应用中还会有其他特定的规则来导出数据,本发明在此不作限定。
其中,所述生成预置格式的文本文件的过程,可以通过自编写的程序将数据表中待转换字段的数据利用特定符号隔开,比如本例中使用逗号将产品ID字段和产品属性字段隔开,则在该步骤中将表中的数据导出成文本如下:
100001,20060:27993;21541:38487;20055:20717;32706:20684
S303:读取计算机硬盘上存储的所述预置格式的文本文件,并将该文本文件转换为目标格式的文本文件;
其中,转换的过程可以利用自编写程序进行,可以对生成好的文本文件逐行进行处理判断,如果有符合条件的特定符号,则将该行数据拆分成多行再生成目标格式的文本文件,该过程在计算机操作系统上来完成;
例如,首先将其中的产品属性这个字段按分号分解成特定的每一对值,如例子中的“20060:27993;21541:38487;20055:20717;32706:20684”分解成为:“20060:27993”、“21541:38487”、“20055:20717”和“32706:20684”这样四对值;然后针对分解后的这几对值根据冒号再次分解,生成以逗号分隔的文本文件如下:
100001,20060,27993
100001,21541,38487
100001,20055,20717
100001,32706,20684
S304:将所述目标数据结构的文本文件导入到目标数据仓库中。
在上述例子中,将转换后的文本文件导入到目标数据仓库中的数据表后,形成的新的数据表如表2所示。
表2
产品ID |
产品属性ID |
产品属性值ID |
100001 |
20060 |
27993 |
100001 |
21541 |
38487 |
100001 |
20055 |
20717 |
100001 |
32706 |
20684 |
另外,参见图4,在本发明的其他实施例中,在将文本文件转换完成之后,也可以先将转换后的文本文件导入到ETL数据库U402中的预置数据表(即另外一张符合业务需求格式的数据表)中,再由ETL数据库U402将该预置数据表同步至目标数据仓库U403中,则,
在步骤S304中,可以先将所述目标格式的文本文件导入到ETL数据库中的预置数据表中,再由ETL数据库将该预置数据表同步至目标数据仓库中,其他步骤与S301~S303相同,业务前端数据库U401和计算机硬盘U404的功能分别与U201和U204相同,这里不再赘述。
前文所述的自编写程序不一定局限于某种计算机语言,该自编写程序是在操作系统级别运行的,而且可以根据需求来进行针对性的优化,因此可以实现非常高的效率。
与现有技术对比,现有技术中基于数据库内部的转换,是利用数据库本身的功能直接对数据表的操作,即直接对数据表中的数据进行处理,然后再将处理后的数据插入到ETL数据库的另外一张数据表中;而本发明是将数据表中的待转换数据导出成文本文件,并存储在计算机硬盘上,然后对该文本文件进行转换处理。由于数据库中对数据表的操作没有操作系统对文本文件操作的效率高,因此本发明的处理效率更高。
由上述可见,本发明实施例将ETL过程脱离传统的基于数据库方式的转换,将转换过程独立出来,在计算机操作系统上来完成,最后再将转换后的文本文件装载至目标数据仓库中。从而降低了数据库服务器的性能负荷;同时,由于转换的过程是在计算机操作系统上进行的,因此提升了转换速度。
与上述本发明实施例提供的方法相对应,本发明实施例还提供了一种对数据表进行转换的装置,参见图5,该装置包括:
导出单元U501,用于将所述数据表中待转换字段的数据从ETL数据库导出;
文本文件生成单元U502,用于将从ETL数据库导出的数据生成预置格式的文本文件;
转换单元U503,用于将所述预置格式的文本文件转换为目标格式的文本文件;
导入单元U504,用于将所述目标格式的文本文件导入到目标数据仓库中。
导出单元U501将所述数据表中待转换字段的数据从ETL数据库导出后,文本文件生成单元U502将从ETL数据库导出的数据生成预置格式的文本文件;然后由转换单元U503将所述预置格式的文本文件转换为目标格式的文本文件,最后再由导入单元U504将所述目标格式的文本文件导入到目标数据仓库中。
其中,所述预置格式的文本文件中,可以由一些特定符号将待转换的字段中的数据隔开,则,
文本文件生成单元U502在生成预置格式的文本文件时,将数据表中不同字段的数据利用预定符号隔开。
其中,转换的过程可以利用自编写程序进行,可以对生成好的文本文件逐行进行处理判断,如果有符合条件的特定符号,则将该行数据拆分成多行再生成目标格式的文本文件,则
转换单元U503用于根据所述预置格式的文本文件中的预定符号,对所述预置格式的文本文件进行拆分,生成目标格式的文本文件。
其中,导入单元U504也可以先将所述目标格式的文本文件导入到ETL数据库中的预置数据表中,再由ETL数据库将该预置数据表同步至目标数据仓库中。
其中,在本发明的优选实施例中,在将所述数据表中待转换字段的数据导出成预置格式的文本文件之前,还包括判断所述数据表待转换的字段中各数据是否为空的步骤,参见图6,则该装置还包括:
判断单元U605,用于判断所述待转换字段的数据是否为空,如果否,触发导出单元U601将该数据从ETL数据库导出;如果是,将该数据丢弃。文本文件生成单元U602将导出的数据生成预置格式的文本文件,转换单元U603将该文本文件转换为目标格式的文本文件,再由导入单元U604将该文本文件导入到数据仓库中。
综上所述,本发明将将所述待处理的数据表中待转换的字段导出成预置格式的文本文件;将所述预置格式的文本文件转换为目标格式的文本文件;再将该目标格式的文本文件导入到数据仓库中。该方法使得数据表的转换过程从传统的ETL转换过程中分离出来,降低了数据库服务器的性能负荷,使得数据仓库能够更专注于业务应用的服务,而不是耗费大量资源在ETL转换过程中。
其次,由于转换的过程是单独进行的,可以很方便地对转换的程序进行优化,使得能够快速地完成转换,并将转换完成的文本文件装载至数据仓库,有效地提升了转换的效率,能够为数据仓库的应用和商业决策提供更及时稳定的支持。
以上对本发明所提供的一种对数据表进行转换的方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。