- 浏览: 928094 次
- 性别:
- 来自: 宁波
文章分类
最新评论
-
masuweng:
不错!!!!!
自定义表单的设计与实现 -
xhackertxl:
注意将jstock cvs下来后去掉原先的J2SE 1.6li ...
开源项目推荐 — 股票分析软件JStock -
luoyexiaozhu:
最近在学表单这一块,没有思路,能发给我一份学习一下吗86239 ...
WEB项目中自定义表单的设计与实现 -
volunteer521:
楼主,以下的引用类没有对应的jar包,麻烦共享以下,谢谢!im ...
通用数据抽取系统 -
baichixiaozi:
体验下,谢谢分享
原创简化Web开发的框架 - JSPTagEx
基于文件,Web Service服务,数据库数据之间的数据导入与导出,全部的数据交换过程通过XML配置文件来完成,并且提供XML配置文件客户端方便编写,这是我在做项目过程中因为频繁处理数据交换而做的一个小系统,希望对大家有用
<!---->
数据抽取配置文件说明(初稿)
<!---->1. <!---->定义数据源
在根节点 <extra-config> 下定义 1 - N 个数据源信息,而数据源的类型包括以下三种 , 则对应的属性设置也有所不同,这是数据抽取的基础,必须设置准确无误,如下:
<!---->Ø <!---->JDBC 连接
这是最普遍的使用方式 , 所有的参数设置根据名称也一目了然,具体的说明如下:
name: 数据源名称
connection-driver :数据库驱动
username :数据库登陆用户名(可加密)
password :密码(可加密)
url :数据库的 URL 连接字符串
dbtype :数据库类型,目前此参数做保留用,留待以后异构数据库之间抽取数据时使用,建议你将此参数填上,这样有利于结构清晰,可填的数据库类型为: ORACLE,SQLSERVER,DB2,ACCESS , PI 等
<!---->Ø <!---->XML
这种数据源的设置主要用在源数据源为 XML 文件的情况,则相应的参数意义有所变化,如下:
name: 数据源名称
connection-driver :填入常数 XML
username :可不填,无效
password :可不填,无效
url : XML 文件所在的目录
dbtype :填入常数 file
<!---->Ø <!---->WEB SERVICE
这种数据源的设置主要用在向外部 INTERNET 提供内部服务或者不能通过 JDBC 直连的情况,考虑到要绕过防火墙,所以使用目前流行的 WEB SERVICE 技术,具体的参数设置如下:
name: 数据源名称
connection-driver : WS 服务端的 JDBC 的驱动字串
username : WS 服务端的 JDBC 连接的用户名(可加密)
password : WS 服务端的 JDBC 连接的密码(可加密)
url : WS 服务端的 JDBC 连接的 URL
endpoint : SOAP 所在路径
dbtype :填入以 WS: 或者 WP: 开头,后跟数据库类型的字符串,如 WS:ORACLE 或者 WP:ORACLE ,其中 WP 开头的是 WEB SERVICE 抽取数据的分页形式,以便抽取大记录集的情况。如果以 WP :开头,则应该写入分页的每页记录数,缺省为 100 ,如输入: WP:ORACLE:100
WEB SERVICE 如果发布到应用服务器上,请参看附录。
特别注意: XML , WEB SERVICE 的数据源设置方式只针对源数据源的设置。如果你将目的数据源设置为这两种方式,系统将退出数据抽取操作。
<!---->2. <!---->定义任务
定义 1 - N 个任务,如下:
<task id="ID1" name=" 测试 1" srcds="EPDSM" desds="FC">
<etra-class class="classa"/>
<etra-class class="classb"/>
</task>
约定:在任务下可以定义 1 - N 个实现类,如以上语句定义了两个实现类。 Srcds , desds :源数据源和目的数据源的名称,与“定义数据源”中的名称要对应。 Name :任务名称。 Auto: 是否自动,其中 1 表示自动,其他手动。注意:目前可用的 JDBC 为两种,具体的配置方法看实例。其中 INET 用于大数据集的抽取, INET 比 ORACLE 驱动普遍速度快 8 - 10 倍,一般情况下建议使用 INET 驱动。
<!---->3. <!---->定义实现类
<etra-class name="classa" type="longshine.extra.GenEtra">
<!- 该模块将被处理 - à
<etra-module enable="true">
<etra-class-param name="from" value="SELECT 语句 "/>
<etra-class-param name="to" value="INSERT 语句 "/>
<etra-class-param name="pk" value="INSERT 语句 "/>
</etra-module>
<!- 该模块将被处理 - à
<etra-module>
<etra-class-param name="from" value="SELECT 语句 "/>
<etra-class-param name="to" value="INSERT 语句 "/>
<etra-class-param name="pk" value="INSERT 语句 "/>
</etra-module>
<!- 该模块将不被处理 - à
<etra-module enable=”false”>
<etra-class-param name="from" value="SELECT 语句 "/>
<etra-class-param name="to" value="INSERT 语句 "/>
<etra-class-param name="pk" value="INSERT 语句 "/>
</etra-module>
</etra-class>
约定:在实现类下可以定义 1-N 个实现类的抽取模块,
其中 name :定义实现类名,与任务中的类名对应, type :定义实现类的全名,如果你是简单的数据抽取应用,如记录集到记录集的抽取,可以直接写成 longshine.extra.GenEtra ,如果涉及到复杂的数据抽取,必须实现写实现类,如负荷预测库的实现类 ComEtra 类。
Enable :表示该模块是否在当前抽取中可用,默认为可用。
etra-class-param :定义参数,这里可以定义三种类型的参数: from,to,pk , PK 参数可缺省不定义,这个参数仅仅用在需要对已存在的记录进行更新操作时要用到,其中 pk 参数填入的值为目的数据库对应的表的关键字字段,如果为多个,则用 , 隔开。
除非有必要一定要这么抽取数据,否则我们不建议你定义这个参数,定义这个参数后,系统的抽取进度将大大减慢。
在 WS 方式下, from 参数的定义可以使用 ID ,这个 ID 通过 wssqls 段来寻找相应的 SQL 语句,这样可以在 WS 发布方和客户端的 SQL 的分离和透明,定义 from 的 value 时,在这种情况下,一定要以 ID: 打头,并且区分大小写。
特别注意 : 如果你需要进行如 create table 等 DDL 语句 , 并且不需要用到源连接 , 则你无须定义 from 属性 , 系统会自动据此来执行相应的 DDL 语句。此功能只适用于 GenEtra 实现类。并且是非 web service 方式。
如果数据源为 XML 文件,则 FROM 属性有所变化,如不为空,则根据执行的文件名执行,如 H_2005051114 ,则数据直接从这个 XML 文件读取,而后按间隔的指定时间(如每隔一个小时)读取下一 XML 文件, H_2005051115 , H_2005051116 ……,如为空,则按当前的小时读取,接下来按指定的时间间隔读取,这样的处理方式是为了和先前数据源为数据库的方式兼容。请特别注意:如果数据源为 XML ,则实现类的模块定义必须为 1 个。
<!---->4. <!---->其他注意事项
<!---->Ø <!---->在进行数据抽取前,必须保证数据源定义的正确,这里包括源数据源和目的数据源都必须能得到正确的数据库驱动加载程序。
<!---->Ø <!---->由于 XML 语法本身的关系,在书写 SQL 语句中,务必要注意在书写类似 < 或者 > 符号时,必须书写成 < > 方式。具体的特殊语法可参看任何一本XML 语法规范书。
<!---->Ø <!---->XML 文件必须严格按照指定的方式编写,请在抽取数据之前仔细检查 XML 文件的正确性。
<!---->Ø <!---->务必注意任务中定义的实现类必须在 classes 块中对此实现类进行定义,否则系统会出错。
建议:使用我们提供的 data.xml 检验工具小软件来书写该文件,并按 F8 快捷键进行文件的检验,检验通过后再进行数据抽取操作,特别注意:检验通过的 data.xml 并不保证能正确执行数据抽取操作,这还要取决于你书写的 SQL 的正确性。
<!---->5. <!---->详细实例
该实例涵盖了基本所有的数据抽取功能,包括所有的数据源的配置方法,实现类定义方法,任务定义方法等
<?xml version = '1.0' encoding = 'GBK'?>
<extra-config>
<data-sources>
<!--ORACLE JDBC -->
<data-source name="FC" connection-driver="oracle.jdbc.driver.OracleDriver"
username="fc" password="fc" url="jdbc:oracle:thin:@172.20.112.148:1521:epcrm"
dbtype="ORACLE"/>
<data-source name="EPDSM" connection-driver="oracle.jdbc.driver.OracleDriver"
username="epdsm" password="epdsm" url="jdbc:oracle:thin:@172.20.112.148:1521:epcrm"
dbtype="ORACLE"/>
<data-source name="CESHI1" connection-driver="oracle.jdbc.driver.OracleDriver"
username="epdsm" password="epdsm" url="jdbc:oracle:thin:@172.20.112.148:1521:epcrm"
dbtype="ORACLE"/>
<data-source name="CESHI2" connection-driver="oracle.jdbc.driver.OracleDriver"
username="epdsm" password="epdsm" url="jdbc:oracle:thin:@172.20.112.148:1521:epcrm"
dbtype="ORACLE"/>
<!-- INET JDBC 超过百万的数据抽取一定要用这个驱动 -->
<data-source name="SQLSERVERTEST" connection-driver="com.inet.tds.TdsDriver"
username="dlyx" password="dlyx" url="jdbc:inetdae7:172.20.0.200:1433?database=fktl"
dbtype="SQLSERVER"/>
<data-source name="INETORADES" connection-driver="com.inet.ora.OraDriver"
username="fc" password="fc" url="jdbc:inetora:172.20.112.148:1521:epcrm"
dbtype="ORACLE"/>
<data-source name="INETORASRC" connection-driver="com.inet.ora.OraDriver"
username="epdsm" password="epdsm" url="jdbc:inetora:172.20.112.148:1521:epcrm"
dbtype="ORACLE"/>
<!--XML 文件的数据源的配置 -->
<data-source name="FXML" connection-driver="xml" username="username"
password="xml" url="newdata\datah" dbtype="file"/>
<!--WEB SERVICE 的数据源的配置 -->
<data-source name="WSTEST"
connection-driver=""
username=""
password=""
url="http://172.20.99.101:9001/WS_FC-extra-context-root/LSGetRs"
dbtype="WS:ORACLE"/>
</data-sources>
<etra-classes>
<!-- 一般的数据抽取实现类定义 -->
<etra-class name="genclass" type="longshine.extra.GenEtra">
<etra-module enable="true">
<etra-class-param name="from"
value="select dept4_id,custor_id,custname,custaddr,eptype2_id,volt_id,
trade4_id,capacity,produce_mode from dw_f_custor where capacity>315
and dept4_id is not null"/>
<etra-class-param name="to"
value="insert into cust_info(compno,custid,name,address,eptype_id,
volt_id,trade_id,capacity,produce_mode)values(?,?,?,?,?,?,?,?,?)"/>
</etra-module>
</etra-class>
<!--WEB SERVICE 的实现类定义 , 其中 SQL 传递的是 ID 号 -->
<etra-class name="wsclaassbyid" type="longshine.extra.GenEtra">
<etra-module>
<etra-class-param name="from"
value="ID:id1"/>
<etra-class-param name="to"
value="insert into temptbl (str) values(?)"/>
<!— 定义的 line_info 表的关键字字段,这样对存在表中的记录将做更新操作 -->
<etra-class-param name="pk" value="compno,lineid"/>
</etra-module>
<!--WEB SERVICE 的实现类定义 -->
<etra-class name="wsclass" type="longshine.extra.GenEtra">
<etra-module>
<etra-class-param name="from"
value="select substation_id,line_no,line_name,line_cap from opc_line_info"/>
<etra-class-param name="to"
value="insert into line_info(compno,lineid,name,cap) values(?,?,?,?)"/>
<!— 定义的 line_info 表的关键字字段,这样对存在表中的记录将做更新操作 -->
<etra-class-param name="pk" value="compno,lineid"/>
</etra-module>
<!—DDL 语句定义 -->
<etra-module enable="true">
<etra-class-param name="to"
value="create table a_test(varchar(20))"/>
</etra-module>
</etra-class>
<!-- 复杂实现类的定义 -->
<etra-class name="comclass" type="longshine.extra.ComEtra"/>
<!--XML 文件为数据源的实现类定义 -->
<etra-class name="xmlclass" type="longshine.extra.XmlEtra">
<etra-module enable="true">
<etra-class-param name="from" value="h_2005051114"/>
<etra-class-param name="to" value="insert into DD_DLB(XLBH,RQ,FDL,GDL,PDL)VALUES(?,?,?,?,?)"/>
</etra-module>
</etra-class>
</etra-classes>
<tasks>
<task id="genTask" name=" 测试 1" system=" 一般任务 " srcds="EPDSM" desds="FC">
<etra-class class="genclass"/>
</task>
<task id="comTask" name=" 测试 2" system=" 复杂任务 " srcds="EPDSM" desds="FC">
<etra-class class="comclass"/>
</task>
<task id="WSTask" name=" 测试 3" system="WEB SERVICE 任务 " srcds="EPDSM" desds="FC">
<etra-class class="wsclass"/>
</task>
<task id="XMLTask" name=" 测试 4" system="XML 任务 " srcds="EPDSM" desds="FC">
<etra-class class="xmlclass"/>
</task>
</tasks>
<wssqls>
<sql id=”id1” value=”select dept from tj_aa_bm”/>
<sql id=”id2” value=”select custor_id from dw_f_custor”/>
</wssqls>
</extra-config>
<!---->
- extra.jar (631.4 KB)
- 下载次数: 474
- data.XML开发检验小软件_已更新_.rar (1.5 MB)
- 下载次数: 889
- 源代码.rar (66.8 KB)
- 下载次数: 405
评论
import longshine.data.DataUtils;
import longshine.data.ETLConstant;
import longshine.data.ETL_Func;
import longshine.data.ETL_Obj;
OK的,只要select,insert语句的数据能对应起来就行,数据源可以来源于任何数据库或者文件,WebService
看了半天也没能明白,配置抽取任务生成的xml文件到底是应该按照日期、小时方式命名,还是就是data.xml?
整个配置文件是通过data.xml来进行的,里面主要配置数据源,实现类(如果为了实现复杂数据抽取的时候,一般也可不定义),任务(定义抽取任务,如每隔多长时间在什么时候执行),程序就会自动按任务去执行数据抽取了
发表评论
-
新个税改革,看看您每月到手钱少了还是多了计算器
2018-08-29 10:04 553背景:国家重拳整治 ... -
新个税计算器,看看每月到手钱多了还是少了
2018-08-29 10:01 0背景:国家重拳整治社保,将社保缴费交给税务局监管,预期会大 ... -
计算机视觉识别汽车花草人脸颜值
2018-05-29 09:09 1413目前人工智能技术已 ... -
计算机视觉识别汽车花草人脸颜值
2018-05-29 09:03 3目前人工智能技术已 ... -
基于Vue2的在线出试卷小系统,开源已发布
2017-11-15 20:17 1765需要出一份在线面试的小系统,找了一圈,好像没有开源实现,基 ... -
小团队管理微信小程序开源啦~
2017-08-16 13:18 1658项目概述:方便打理 ... -
自定义表单的设计与实现
2017-06-13 17:46 8268制作调查表或企业内部系统的时候,经常被一系列表单弄得焦头烂 ... -
微信小程序开发我遇到的一些坑和建议
2017-04-13 20:08 109小程序最近火了,所 ... -
微信小程序开发我碰到的坑
2017-04-13 20:02 4小程序最近火了,所以 ... -
利用JSPTagEx开发单页面Web程序(附源码)
2015-09-15 15:22 2634何为SPA:Web开发单页面,利用pushState技术实现 ... -
利用JSPTagEx开发单页面Web程序(附源码)
2015-09-15 14:59 1何为SPA:Web开发单页面,利用pushState技术实 ... -
简化移动端开发(NodeJs+Thrift+SocketIO+混编)
2015-08-05 17:16 145本文搭建一套基于Nodejs+SocketIO+Thrif ... -
利用原创框架封装后台管理组件
2015-06-19 18:02 200通过前几天编写的后台管理框架jsptagex我们已经能很快 ... -
原创简化Web开发的框架 - JSPTagEx
2015-06-12 12:53 4679在博客蛰伏了一年多,该写点东西了:) JSPTag ... -
原创Web框架 - JSPTagEx
2015-06-12 12:44 1在博客蛰伏了一年多,该写点东西了:) JSPTag ... -
桌面开发服务端混搭Java
2014-09-26 16:10 0本篇博客在原有GQT桌面项目的基础上,加入了服务端代码(C ... -
关于openfire负载均衡和扩展性的思考
2014-06-04 17:15 0解决并发用户过多 如果你的应用场景无需考虑每个注册用户都必 ... -
异构语言高可用性服务端的设计与实现
2014-05-30 16:01 3006本文的客户端基于我 ... -
也谈基于Web的含工作流项目的一般开发流程
2014-03-19 17:20 5776该项目包含的通用模块代码等我有时间一并剥离贡献出来(基于W ... -
高性能高可用的服务端研究之Req-Rep模式(附源码)
2014-03-04 10:01 5562最近在思考高可用的 ...
相关推荐
1. `通用数据导出.kjb`:这是Kettle的工作流文件,可能包含了整个数据抽取过程的流程控制,如启动、结束、错误处理等。工作流可以调用一个或多个转换,并按照预定义的顺序执行它们。 2. `通用数据导出.ktr`:这是一...
### 一种通用的多数据库间数据抽取方法及应用 #### 摘要解析与扩展 在当前信息化时代,企业或组织通常拥有多个不同类型的数据库系统(即异构数据库),这些数据库可能来自不同的供应商,有着各自的数据结构和访问...
9. **错误处理和重试机制**:在Java实现ETL过程中,必须考虑到数据抽取可能出现的错误,如网络中断、数据不一致等。实现错误处理和重试机制是保证ETL稳定运行的关键。 10. **性能优化**:为了提高数据抽取效率,...
### 基于CWM的企业元数据集成中元数据抽取与导出研究 #### 一、引言 近年来,随着信息技术的快速发展,企业对于数据的需求日益增加,如何有效地管理和利用这些数据成为了企业管理的重要议题之一。元数据作为描述...
本文将深入探讨一种针对异构数据源的通用数据转换工具的设计与实现,这是一份编程资源,旨在解决复杂的数据整合问题。 首先,我们要理解异构数据源下的数据转换问题。在大数据时代,数据可能来自各种不同的系统,如...
本项目是一个基于Python开发的关系抽取系统,旨在通过API接口从文本数据中提取实体间的结构化关系信息。系统采用Bootstrapping方法,能够自动识别和提取指定关系的三元组实体。 ## 项目的主要特性和功能 三元组...
数据采集阶段可能会用到flume(分布式日志数据汇聚)和sqoop(离线批量抽取数据库),而实时数据捕获则可能会使用canal(数据库数据逐条监听抽取)。前端存储系统则可能包括HDFS、MySQL、Redis以及HBase或Elastic...
为了解决现有的信息抽取系统局限于特定应用、特定算法和单一语言的问题,文章提出了一个通用的多语言信息抽取框架。该框架具备以下特点: 1. **通用性**:系统设计考虑了多种信息抽取任务的需求,可以适应不同的...
《易得网站数据通用采集系统》是一款用于自动化获取和处理网络数据的专业工具,它能够帮助用户从各种网站中批量提取所需信息,适用于市场研究、数据分析、SEO优化等多个领域。这款系统的核心在于其强大的数据抓取...
2. **元数据捕获**:系统需要有能力从各种数据源自动或手动抽取元数据,这可能涉及到ETL(提取、转换、加载)过程。 3. **元数据整合**:不同来源的元数据可能格式不一,需要进行统一和标准化,以便于查询和分析。 ...
* 数据抽取:从源系统中抽取数据 * 数据转换:将抽取的数据转换为目标系统所需的格式 * 数据加载:将转换后的数据加载到目标系统中 ETL 设计的工具包括 datax、streamsets 等,同步方式包括全量同步和增量同步两种...
能不能高效、准确的将一个页面的正文抽取出来,并做到在大规模网页范围内通用,这是一个直接关系上层应用的难题。 采用建 DOM 树的方法虽然直观也有效,但建树和搜索是多项式时间,且饱受病态 HTML 的痛苦;采用机器...
在关系抽取系统设计时,远监督方法被用于构建适合各领域的关系列表的数据集信息抽取方法。远监督方法利用已有的知识库或数据库与文本进行对齐,尽管这种方法可能会引入噪声,但它极大地减少了人工标注数据的需求,...
支持记忆功能,在下次重新进入系统时,恢复到上次的抽签状态,已抽取的不会被重复抽取。 用户分为三个等级,每个级别有不同的权限,每个用户登录、退出、重要的操作等均被记录到日志中,所有的操作都有可追溯性,...
在IT行业中,数据抽取是一项至关重要的任务,它涉及到从各种数据源获取信息并转换为统一格式,以便进一步处理、分析或存储。在这个“SSD.zip”压缩包中,重点是Web Service、服务(Service)、Delphi编程语言以及XML...
【基于行块分布函数的通用网页正文抽取算法】 网页正文抽取是信息检索领域的一个核心问题,它涉及到如何从复杂的HTML文档中准确、高效地提取出主要内容。正则表达式可以处理特定格式的页面,但在处理多样化的HTML时...