发一个我写的ETL(BI)工具perletl开源项目
BI--商务智能DW--数据仓库
一定是未来10年的重头戏。我们知道现在企业级应用越来越多,数据量自然越来越大,尤其以电信,银行,erp,电子商务,社交网络等非常明显。以移动为例,每天n个T的话单数据,以校内网为例,它现在成立了一个数据仓库部门,在招人,使用hive数据库,比如做营销的北京新华信,比如淘宝~~~~~~~业界也是,比如teredata公司推出了pb级别的数据仓库,1pb=1024T,大家可以想象一下pb是个什么概念
数据仓库是面向主题,保存的是历史数据,它不需要事务处理,它需要进行多维分析,也就是说一旦数据进入到数据仓库,它就基本不会改变了
那么它是怎么进入到数据仓库的呢?
答案是ETL(抽取,转换,加载),当然etl的范畴里也包含数据清洗。
this is a pm for ETL,now the first version support DB2,in future,maybe add mysql,Oracle etc
这是我用perl写的perl模块,主要是通过perl操作DB2。内置了很多使用功能,是ETL的好帮手
本模块对容错,事物,连接方式都进行了优化,尤其擅长对db2的各种操作
实用功能:如定时执行任务······
Google code上
项目主页:http://code.google.com/p/perletl/
可以用svn检出,地址:svn checkout http://perletl.googlecode.com/svn/trunk/ perletl-read-only
如不熟悉svn,自行搜索tortoise svn
<hr>
perl连接DB2方式1:DBI::DBD
1. 1组成部分
-getDbHandler 同DBconnect(),建立并获取数据库连接
-PrepareExecuteSql? 预编译SQL
-TransRollback? 出错事务回滚
-disconnect 与DBconnect()相反,销毁数据库连接
2. 2执行部分
-executeSQL 执行完SQL要我们手动关闭连接,用于处理多行SQL
-executeOnceSQL 执行完SQL会自动关闭连接。
-getSelect 获取结果集,然后自己写while进行处理。(内部无日志版getStatement)
-getAllCount 获得表中记录总数,参数是表名
-getCountBySQL 通过SQL获得表中记录总数,参数是SQL,如“select count(0) from mk_vsdm.a”返回的是数组的第一个,所以不要select多个字段
-dropTables 删除表,如果存在DBI::DBD连接,使用它,没有就用db2cmd删除。可以容错。参数是模式名+表名组成的多个字符串数组,参数可以是1个,也可以是多个
-isDb2TableExist 检测表名是否存在
perl连接DB2方式2:
-run_db2cmd_main 首先会调用setUserAndPasswd获取用户名密码,然后就可以执行SQL
工具方法:
-run_cmd 调用bat文件
-mylog 普通日志打印
-mySubLog 方法前日志打印,以+号和-号拼成的
-myTabLog 在mylog日志前多一个tab
-myStatusLog 执行状态日志打印,在myTabLog基础上,外加3个*号
日期 :
-createDir 创建相对路径
TODO :支持多个connection,很简单写一个newConnection方法,在executeSQL中加connection参数。
http://perletl.googlecode.com/files/pm1.PNGhttp://perletl.googlecode.com/files/pm2.PNGhttp://perletl.googlecode.com/files/pm3.PNG
页:
[1]