一种针对Excel文件的增量数据的ETL实现方法

文档序号:6584195阅读:145来源:国知局
专利名称:一种针对Excel文件的增量数据的ETL实现方法
技术领域
本发明涉及一种针对Excel文件的增量数据的ETL实现方法。
背景技术
目前,在对数据处理过程中最方便、快捷、易用的软件应该是微软的Excel。它在 当今世界上广泛用来做数据的存储、数据的简单运算以及数据的展示,因此在对数据的ETL 过程中,应该也必须包括对Excel进行支持。不过也正因为Excel应用广泛,格式多样化, 导致了大部分支持Excel数据ETL的方法都只是简单的支持标固定格式的Excel文档数据 ETL,这些方法缺乏有效的灵活性和适用性。

发明内容
本发明的目的就是针对上述的不足,提供了 一种基于开源JavaAp i上的 InfoSib-ExcelSource和InfoSib-ExcelSink构件,采用对文件增量和文件内容全量进行 抽取,而且还支持对指定部分的文件内容进行抽取;支持一般和特殊格式文件的分开抽取; 支持文件过滤、Sheet表单过滤及数据列过滤;支持Excel到Excel 、Excel到数据库及数据 库到Excel ;支持远程Excel数据抽取;支持一次配置多次运行;支持实时、定时及触发三 种抽取模式的针对Excel文件的增量数据的ETL实现方法。 —种针对Excel文件的增量数据的ETL实现方法,获取并解析source和sink端 的配置信息,并行启动多个线程分别用于读取source端excel文件内容、发送封装后的 Data0bject对象和sink接收获得的Data0bject对象进行处理,并最后写入excel文件。
上述获取并解析source和sink端的配置信息的步骤为获取source端的xbean. xml文件,并解析出对应的配置信息;获取sink端的xbean. xml文件,并解析出对应的配置 信息。 优选的,按照下列步骤进行并行启动多个线程分别用于读取source端excel文件 内容、发送封装后的Data0bject对象和sink接收获得的Data0bject对象进行处理,并最 后写入excel文件的操作 启动source端读取线程,循环读取基础目录File0b ject对象下面符合抽取规则 的Excel文件,并将内容封装成若干个Data0bject对象送入发送队列中;
启动发送线程,循环读取发送队列中的DataObject对象,并发送到InforSib总线 容器; 启动sink端处理线程,监听InforSib总线;当Data0bject从InforSib总线到达
sink端时,处理线程将调用process方法来接接收Data0b ject并准备处理。 优选的,按照下列步骤来获取source端配置文件 解析source端xbean. xml文件,获取Source端配置信息; 通过解析Xml文件,获得配置信息中的r皿Mode项内容来确定抽取模式是实时或 定时或触发;
根据Xml中的remoteFile项配置信息,判断是进行远程还是本地的Excel文件数据抽取,如果是远程文件,则使用远程方法创建基础目录的FileObject对象,如果是本地文件,则使用本地方法创建基础目录的FileObject对象; 根据获得的配置内容,取出跟抽取动作有关的信息,生成抽取规则,开始按抽取规
则对FileObject对象下面的Excel文件进行抽取。 优选的,Source按照如下步骤进行读取excel文件内容操作 启动读取线程,循环读取基础目录FileObject对象下面符号抽取规则的Excel文
件,并将文件的数据写入内存; 按照抽取规则,将内存中的Excel内容写入Document对象中; 将生成的Document对象按照抽取规则中设置的包数目大小和包字节大小封装成
Data0bject对象,并放入发送线程的发送队列中。 优选的,按照如下步骤获得sink端配置信息 解析Sink端配置信息文件xbean. xml,获取excel目的端文件路径,解析xbean.xml中的内容,获取sink端所使用的excel文件路径、excel sheet及其他信息;
根据解析xbean. xml得到的excel文件路径,判断该路径是否为本地路径还是为远程路径; 如果获取的excel路径为远程路径,则判断该远程的excel文件是否已经存在或不存在,如果不存在则创建该文件; 如果获取的excel路径为本地路径,则判断该本地excel文件是否已经存在或不存在,如果不存在则创建该文件; 自动载入已经存在或则创建的excel文件到内存当中。
优选的,Sink端按照如下步骤进行接收和处理操作 sink端启动处理线程,监听InforSib总线;当Data0bject从InforSib总线到达sink端时,处理线程将调用process方法来接接收Data0b ject并准备处理;
sink端处理线程,接收到Data0bject后,将从Data0bject解析出excel结构,excel数据,excel数据格式信息; sink端处理线程,按照xbean中的获得excel文件、excel sheet,将从Data0b ject中解析出的excel数据,按照追加方式把excel数据保存到excel文件中。
本发明提供的针对Excel文件的增量数据的ETL实现方法,具有如下优点
1.无需编程,现有编程人员可以将时间花费在更有价值的项目上。公司可以利用遗留系统并跨所有支持的平台整合数据,无需对现有环境进行更改。可以轻松地适应计算环境中未来的变更,以使您的投资能适应未来。 2.适用范围广,基本上涵盖了所有Excel文件数据的ETL需求,并且能够实现Excel到Excel、 Excel到数据库和数据库到Excel 。 3.灵活性强,既可以进行一般整体性的Excel数据ETL也可以对特殊的Excel进行ETL,而且还可以进行实时、定时和触发等多种模式。 4.操作简单,对大部Excel文件都不需要进行更多的配置,就能进行想要的数据ETL,对特殊格式的Excel文件,也能很容易的在层级的配置界面中轻松实现。


图1是本发明实施例的流程图。
具体实施例方式
下面以非限定性的实施方式对本发明做进一步解释、说明。 —种针对Excel文件的增量数据的ETL实现方法,如图l所示,本方法开始于步骤101,解析Xml文件,获取Source端配置信息。 然后进入步骤102,通过解析Xml文件,获得配置信息中的r皿Mode项内容来确定抽取模式是实时或定时或触发。 在步骤103,根据Xml中的remoteFile项配置信息,判断是进行远程还是本地的Excel文件数据抽取,如果是远程文件,则进入步骤1041,使用远程方法创建基础目录的FileObject对象;如果是本地文件,则进入步骤1042,使用本地方法创建基础目录的FileObject对象。 然后进入步骤105,根据获得的配置内容,取出跟抽取动作有关的信息,生成抽取规则,开始按抽取规则对FileObject对象下面的Excel文件进行抽取。
再进入步骤106,启动读取线程,循环读取基础目录FileObject对象下面符号抽取规则的Excel文件,并将文件的数据写入内存。 在步骤107,按照抽取规则,将内存中的Excel内容写入Document对象中。
然后在步骤108,将生成的Document对象按照抽取规则中设置的包数目大小和包字节大小封装成DataObject对象,并放入发送线程的发送队列中。 在步骤109,启动发送线程,循环读取发送队列中的Data0bject对象,并发送到InforSib总线容器。 在步骤1010, sink端启动处理线程,监听sib总线;当DO从sib总线到达sink端时,处理线程将调用process方法来接接收DO并准备处理。 在步骤1011,解析Sink端配置信息文件,获取excel目的端文件路径,解析xbean. xml中的内容,获取sink端所使用的excel文件路径、excel sheet及其他信息。
在步骤1012,根据解析xbean. xml得到的excel文件路径,判断该路径是否为本地路径还是为远程路径。 如果获取的excel路径为远程路径,则在步骤1013,判断该远程的excel文件是否
已经存在或不存在,如果不存在则在步骤1014创建该文件,并进入步骤1017。 如果获取的excel路径为本地路径,则在步骤1015判断该本地excel文件是否已
经存在或不存在,如果不存在则在步骤1016创建该文件,并进入步骤1017。 在步骤1017,载入已经存在或则创建的excel文件到内存当中。 然后在步骤1018, sink端处理线程,接收到DO后,将从DO解析出excel结构,
excel数据,excel数据格式等信息。 最后,进入步骤1019, sink端处理线程,按照xbean中的获得excel文件、excelsheet,将从DO中解析出的excel数据,按照追加方式把excel数据保存到excel文件中。
权利要求
一种针对Excel文件的增量数据的ETL实现方法,其特征在于获取并解析source和sink端的配置信息,并行启动多个线程分别用于读取source端excel文件内容、发送封装后的DataObject对象和sink接收获得的DataObject对象进行处理,并最后写入excel文件。
2. 根据权利要求1所述的针对Excel文件的增量数据的ETL实现方法,其特征在于 获取并解析source和sink端的配置信息的步骤为获取source端的xbean. xml文件,并 解析出对应的配置信息;获取sink端的xbean. xml文件,并解析出对应的配置信息。
3. 根据权利要求1所述的针对Excel文件的增量数据的ETL实现方法,其特征在于 按照下列步骤进行并行启动多个线程分别用于读取source端excel文件内容、发送封装后 的DataObject对象和sink接收获得的DataObject对象进行处理,并最后写入excel文件 的操作启动source端读取线程,循环读取基础目录FileObject对象下面符合抽取规则的 Excel文件,并将内容封装成若干个DataObject对象送入发送队列中;启动发送线程,循环读取发送队列中的DataObject对象,并发送到InforSib总线容器;启动sink端处理线程,监听InforSib总线;当DataObject从InforSib总线到达sink 端时,处理线程将调用process方法来接接收DataObject并准备处理。
4. 根据权利要求2所述的针对Excel文件的增量数据的ETL实现方法,其特征在于 按照下列步骤来获取source端配置文件解析source端xbe肌xml文件,获取Source端配置信息;通过解析Xml文件,获得配置信息中的r皿Mode项内容来确定抽取模式是实时或定时 或触发;根据Xml中的remoteFile项配置信息,判断是进行远程还是本地的Excel文件数据抽 取,如果是远程文件,则使用远程方法创建基础目录的FileObject对象,如果是本地文件, 则使用本地方法创建基础目录的FileObject对象;根据获得的配置内容,取出跟抽取动作有关的信息,生成抽取规则,开始按抽取规则对 FileObject对象下面的Excel文件进行抽取。
5. 根据权利要求3所述的针对Excel文件的增量数据的ETL实现方法,其特征在于 Source按照如下步骤进行读取excel文件内容操作启动读取线程,循环读取基础目录FileObject对象下面符号抽取规则的Excel文件, 并将文件的数据写入内存;按照抽取规则,将内存中的Excel内容写入Document对象中;将生成的Document对象按照抽取规则中设置的包数目大小和包字节大小封装成 DataObject对象,并放入发送线程的发送队列中。
6. 根据权利要求2所述的针对Excel文件的增量数据的ETL实现方法,其特征在于 按照如下步骤获得sink端配置信息解析Sink端配置信息文件xbean. xml ,获取excel目的端文件路径,解析xbean. xml中 的内容,获取sink端所使用的excel文件路径、excel sheet及其他信息;根据解析xbean. xml得到的excel文件路径,判断该路径是否为本地路径还是为远程路径;如果获取的excel路径为远程路径,则判断该远程的excel文件是否已经存在或不存 在,如果不存在则创建该文件;如果获取的excel路径为本地路径,则判断该本地excel文件是否已经存在或不存在, 如果不存在则创建该文件;自动载入已经存在或则创建的excel文件到内存当中。
7.根据权利要求3所述的针对Excel文件的增量数据的ETL实现方法,其特征在于 Sink端按照如下步骤进行接收和处理操作sink端启动处理线程,监听InforSib总线;当DataObject从InforSib总线到达sink 端时,处理线程将调用process方法来接接收DataObject并准备处理;sink端处理线程,接收到DataObject后,将从DataObject解析出excel结构,excel 数据,excel数据格式信息;sink端处理线程,按照xbean中的获得excel文件、excel sheet,将从DataObject中 解析出的excel数据,按照追加方式把excel数据保存到excel文件中。
全文摘要
一种针对Excel文件的增量数据的ETL实现方法,基于开源JavaApi上的InfoSib-ExcelSource和InfoSib-ExcelSink构件,采用对文件增量和文件内容全量进行抽取,而且还支持对指定部分的文件内容进行抽取;支持一般和特殊格式文件的分开抽取;支持文件过滤、Sheet表单过滤及数据列过滤;支持Excel到Excel、Excel到数据库及数据库到Excel;支持远程Excel数据抽取;支持一次配置多次运行;支持实时、定时及触发三种抽取模式。
文档编号G06F9/44GK101697126SQ20091022962
公开日2010年4月21日 申请日期2009年10月28日 优先权日2009年10月28日
发明者扶文海, 舒琦, 陈俊 申请人:山东中创软件商用中间件股份有限公司;
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1