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

技术编号:4238201 阅读:916 留言:0更新日期:2012-04-11 18:40
一种针对Excel文件的增量数据的ETL实现方法,基于开源JavaApi上的InfoSib-ExcelSource和InfoSib-ExcelSink构件,采用对文件增量和文件内容全量进行抽取,而且还支持对指定部分的文件内容进行抽取;支持一般和特殊格式文件的分开抽取;支持文件过滤、Sheet表单过滤及数据列过滤;支持Excel到Excel、Excel到数据库及数据库到Excel;支持远程Excel数据抽取;支持一次配置多次运行;支持实时、定时及触发三种抽取模式。

【技术实现步骤摘要】

本专利技术涉及。
技术介绍
目前,在对数据处理过程中最方便、快捷、易用的软件应该是微软的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对象按照抽取规则中设置的包数本文档来自技高网...

【技术保护点】
一种针对Excel文件的增量数据的ETL实现方法,其特征在于:获取并解析source和sink端的配置信息,并行启动多个线程分别用于读取source端excel文件内容、发送封装后的DataObject对象和sink接收获得的DataObject对象进行处理,并最后写入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对象;根据获得的配置内容,取出跟抽取动作有关的信...

【专利技术属性】
技术研发人员:扶文海舒琦陈俊
申请(专利权)人:山东中创软件商用中间件股份有限公司
类型:发明
国别省市:88[中国|济南]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1