发一个我写的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参数。
 

你可能感兴趣的:(sql,SVN,脚本,db2,perl)