kettle实现表同步

kettle实现表同步
kettle实现表同步

同步数据常见的应用场景包括以下4个种类型:

?只增加、无更新、无删除

?只更新、无增加、无删除

?增加+更新、无删除

?增加+更新+删除

1只增加、无更新、无删除

对于这种只增加数据的情况,可细分为以下2种类型:

1) 基表存在更新字段。

通过获取目标表上最大的更新时间或最大ID,在“表输入”步骤中加入条件限制只读取新增的数据。

这里要注意的是,获取最大更新时间或最大ID时,如果目标表还没有数据,最大值会获取不了。其中的一个解决方法是在“获取最大ID”步骤的SQL中,加入最小日期或ID的联合查询即可,如:SELECT MAX(ID) FROM

(SELECT MAX(ID) AS ID FROM T1 UNION ALL SELECT 0 AS ID FROM DUAL)

2) 基表不存在更新字段。

通过“插入/更新”步骤进行插入。

插入/更新步骤选项:

2只更新、无增加、无删除通过“更新”步骤进行更新。

更新选项:

3增加+更新、无删除通过“插入/更新”步骤进行插入。

区别是“插入/更新步骤”中的选项,去掉“不执行任何更新”的勾选:

4增加+更新+删除

这种数据同步情况,可细分为以下2种情况:

1) 源库有表保存删除、更新和新增的信息。

通过条件判断,分别进行“插入/更新”和“删除”即可,如下图所示。

2) 源库没有保存增删改信息

Kettle提供了一种对比增量更新的机制处理这种情况,可通过“合并记录”步骤实现,该步骤的输入是新旧两个数据源,通过关键字进行数据值比对,对比结果分为以下4种类型:

“Identical” : 关键字在新旧数据源中都存在,域值相同

“changed” : 关键字在新旧数据源中都存在,但域值不同

“new” :旧数据源中没有找到关键字

“deleted”:新数据源中没有找到关键字

两个数据源的数据都进入下一步骤,上述4种结果类型作为输出表的标志字段进行保存。

以下为示例:

?源数据库测试脚本

create table k1 (f1 varchar2(200),f2varchar2(200))

truncate table k1;

insert into k1(f1,f2) values('1','11');

insert into k1(f1,f2) values('2','22');

insert into k1(f1,f2) values('5','5');

commit;

?目标数据库测试脚本

create table k1 (f1 varchar2(200),f2varchar2(200))

truncate table k1;

insert into k1(f1,f2) values('1','1');

insert into k1(f1,f2) values('2','2');

insert into k1(f1,f2) values('3','3');

insert into k1(f1,f2) values('4','4');

commit;

合并过程如下:

其中“合并记录”步骤的选项:

执行后,查询K1_TEST结果如下:

可以看到,该结果表的BZ字段保存了更新、删除、新增的记录信息,通过条件分支即可分别对这些记录进行相应的处理。“条件”选项:

5测试效果

Kettle提供了可视化的设计工具,基本上可通过拖拉配置的方式实现以上4种类型的数据同步,操作上相对较为简单。

数据同步的性能与源数据库、目标数据库以及执行Kettle转换操作的主机相关,在笔者的测试环境上(源数据库和目标数据库部署在双核CPU/4G内存的PC机上、执行Kettle转换操作的主机配置为双核CPUx2/4G内存,JVM内存堆栈为256M)、最后一种类型的数据同步,15w的数据,在3分钟内可以完成。

施工日志表格(通用)

江安县西江大桥新桥建设项目 本日志编号:TR-DL-RZ-01 竣工日程: 年 月 日 施工单位名称: 成都光大建设集团有限公司 项目经理: 施工工程地点: 江安县城西 记录负责人: 归档日期: 施工开工日期:

关于单位工程施工日志的规定 第一条:为了系统地掌握单位工程自准备开工日起至竣工交验日止的全部施工动态,以督促检查工作,总结经验为日后参考。特规定单位工程施工负责人员,必须遵照本规定记载单位工程施工日志并签名。 第二条:单位工程施工日志,必须妥为保管,不得遗失或损坏,竣工缴还公司存档。 第三条:项目经理应负责督促检查单位工程日志记录正确,及时填写。 第四条:混凝土工程,桩基工程除应单独做砼浇注记录表,另行存档,其主要项目应摘要记录在日记中,土质钻探或荷重试验及高层建筑沉降变形观测等,可根据建设单位需要另作记录,另行存档。 第五条:单位工程施工日记记录内容为: 1、单位工程开工前的准备情况,存在的问题如何解决,摘要记录。 2、部分工程和主要分项工程开工、竣工及中途停工日期,注明停工日期,处理办法及结果。 3、分部工程,分项工程完工数量与出勤人数(各工种班组人数)。 4、单位工程项目经理收到施工图纸技术文件及其他有关施工指示文件之日起。 5、每日气象记录,如风向、雨,温度情况。 6、计划变更事项、日期,负责提出者的姓名。 7、因工程质量不合设计要求和其他施工错误而引起返工数量、日期,原因等事项。 8工伤事故、机械故障及其他意外事件,发生的原因和处理经过。 9、劳动调度,主要技术措施,施工布置及其执行结果。 10、隐蔽工程检查验收日期,并注明其书面文件。 11、基础地下水位,地质情况。地下水及工程用水化学分析记录文件编号,及其主要结果。 12、主要材料,构件及机具收到日期和数量,送验者、送验日期和试验结果。 13、其他必须记载的事故。 14、工程变更设计的分部分项名称、来文单位及提供施工技术资料日期

Kettle多线程导致的抽取问题解决

今天在测试kettle一个转换的问题,据现场描述,在手工执行该job转换时,获取到的时间是正确的,但是一旦使用批处理计划任务调用执行时,获取到的时间就有问题,转换如下: '查找数据库当前时间' 这个步骤的数据库连接是’AA‘,这一步骤的动作是查找当前系统时间 select sysdate as cksj from dual ’插入/更新‘的数据库连接是’BB‘,这一步骤的动作是把上一步骤得到的时间,更新到表tt的bcgxsj字段中 ’删除'的数据库连接是‘BB’,这一步骤的动作是删除表t1中CQZT='1'的数据 ‘获取更新时间’的数据库连接是'BB',这一步骤是获取步骤‘插入/更新’中更新表tt的bcgxsj字段后的值 现在出现的问题就是,在单独执行时,发现‘获取更新时间’步骤中,获取到的时间,确实是‘插入/更新’步骤执行后的值,

但是,如果通过bat调用,在计划任务中执行时,发现‘获取更新时间’步骤中,获取到的bcgxsj就不对了,查看日志,发现获取到的时间,是更新前的时间。 猜想,应该是kettle多线程的问题。再仔细看日志,发现执行的步骤好像有点不对 发现‘获取更新时间’这一步骤根本不是在’插入/更新‘后执行的,而是一开始就已经连接数据库查询,这样肯定出来的结果不可能是更新后的当前系统时间 这步骤甚至比’查找数据库当前时间‘更早执行。 网上查找原因: 在多线程软件下处理数据库连接,最推荐的方法是在转换执行的过程中为每个线程创建单一的连接。因此,每个步骤复制都打开它们自己单独的事务或者事务集。 这将导致一个潜在的后果,就是你在使用同一个数据库资源的场景下,例如一张数据表或者视图,条件竞争在同一个转换中可能而且会经常发生。 一个常见产生错误的场景,就是当你往一个关系数据表里面写入数据,在随后的步骤里面读回。因为这两个步骤运行在不同的数据库连接下,而且拥有不同的事务上下文,你不能确保这个被第一个步骤写入的数据将可见于其他正在执行读操作的步骤。

施工日志填写要求及样本

赣龙铁路扩能改造工程 施工日志 (第册共册) 标段名称: GL-5标 工程名称:设计的单位工程名称 施工里程: 施工单位:中国中铁五局(集团) 监理单位:西安铁一院工程咨询监理公司 记录人:负责本工程的技术主管 开工日期:年月日(实际开工时间) 竣工日期:年月日(本记录工程完工时间)

填写要求 一、施工日志是重要的工程施工技术履历档案,应按单位或单项工程分别单独填写,并纳入竣工文件。不得几项工程混合或交叉填写。 二、施工日志由工程(点)施工负责人或技术负责人按规定内容逐日连续填写,不得隔日、跳日或断日填写;字迹工整清晰,不得涂改;应采用蓝黑或碳素墨汁笔书写,不得使用其它墨汁书写或电脑打印;“记录”栏中应连续填写,不得出现空白行、段和页;对需要补充的内容应在“备注”栏中书写,对记录问题的地方应在“备注”栏中用“*”标识并注明纠正和验证情况的记录页码。 三、施工日志记录应详略得当,突出重点,着重记录与工程质量形成过程有关的内容,确保工程质量具有可追朔性。与工程施工和质量形成无关的内容不得写入其中。 四、填写内容至少应包括: 1.在首页上单独描述本工程的基本概况。主要包括设计概括、主要施工负责人、技术负责人、质检工程师、监理工程师、开工及竣工日期等。 2.在施工日志的顶端应写上工程地点(里程或部位)、日期、气候等。 3.按施工先后顺序如实记录工程形成的全过程: (1)工程形象进度(施工内容)。 (2)水文、地质情况。 (3)主要施工方法。 (4)施工内容及施工数量。 (5)机械配置及使用情况。 (6)人员配置情况。 (7)安全、质量、环保、文明施工情况 (8)变更设计情况。 (9)超前地质预测预报情况 (10)隧道监控量测情况。 (11)隐蔽工程检查验收情况。 (12)技术交底、施工方案、测量放样。 (13)材料进场情况及试验取样、检验情况。 (14)安全质量、技术教育培训情况。 (15)上级人员检查情况及整改情况。 (16)其他。 4. 施工日志中记录的问题必须有纠正和验证记录,做到问题闭合。

施工日志填写范本

日期××年×月×日星期× (℃) 气候 施工部位作业 班组 作业 人数 班组长上午下午 ×栋×号楼三层6.000~9.000 2-1~2-7×2-K~2-V;2-9~2-14×2-A~2-M;2-15~2-22×2-H~2-R 木工班 钢筋班 架子班 机械班 18 8 8 2 赵×× 钱×× 孙×× 李×× 28 晴晴转阴 温度 (℃) 上半夜下半夜 阴 当日施工内容 木工班3人负责吊运钢管、扣件、模板等周转材料。15名技工搭设满堂架﹝350㎡﹞。钢筋工5人加工棚内下料制作箍筋,3人现场焊接竖向构件钢筋。 晚上木工班3人加班吊运钢管模板等周转材料﹝19;30~23;30﹞。 设计变更或技术核定 技术交底 已对木工班组进行交底,特别针对立杆间距、横杆及扫地杆间距。 顶托自由端高度等施工方案的实施。架工班已作外架搭设方案交底。隐蔽工程验收 试块、试件取样送检情况 现场汇同监理见证取样×组钢筋焊接试件,钢筋原材料试件××组。 取样人:王×× 原材料进场、送检情况钢筋原材料于昨晚进场60T,今日上午已向监理报验,并取样送检。 质量情况木工部分立杆、横杆、扫地杆间距过大,超过技术方案交底要求,已责承班组整改。 钢筋箍筋内皮尺寸较小,误差20~30㎜,已要求班组返工。 进度情况 木工满堂架搭设完成形象进度的1∕6,钢筋工竖向构件气压焊完。 箍筋加工约40﹪ 安全情况架子班8人开始搭设外架操作层。 其他 上午停电3小时﹝9点~12点﹞

日期××年×月×日星期二 (℃) 气候 施工部位作业 班组 作业 人数 班组长上午下午 ×栋×号楼三层6.000~9.000 2-1~2-7×2-K~2-V;2-9~2-14×2-A~ 2-M;2-15~2-22×2-H~2-R 木工班 钢筋班 架子班 机械班 18 8 8 2 赵×× 钱×× 孙×× 李×× 29 晴晴 温度 (℃) 上半夜下半夜 晴 当日施工内容 木工班14人继续搭设满堂架,4人铺设梁底板,2名工人吊运周转材料。钢筋班5人加工棚内制作钢筋,3人现场绑扎柱筋。下午通知监理验收柱筋,并同意我方封柱模﹝共31根﹞ 晚木工班3人加班吊运周围材料﹝20;00~23;30﹞ 设计变更或技术核定接甲方工程联系函××字,将在三层2-4轴交2-7~2-V轴间增设一 根梁200×500 技术交底针对甲方所发工程联系函,立即对班组进行现场交底。同时转发函 给劳务分包。让木工班长赵××、钢筋班长钱××签收,已在图上 标注。 隐蔽工程验收三层框架柱已作好隐蔽记录,同时也请监理验收签认。试块、试件取样送检情况 原材料进场、送检情况 质量情况立杆,横杆、扫地杆木工班已作调整。基本达到方案的要求。 钢筋班也按图示尺寸加工箍筋。 进度情况 木工满堂架基本搭完,完成形象进度的2∕6,钢筋班箍筋加工完成 90﹪ 安全情况架子班8人搭设外架操作层护栏,挂安全网。

ETL之kettle进行二次开发简单demo

demo,利用kettle的api,将一个数据源中的信息导入到另外一个数据源中:[java]view plain copy 1.package https://www.360docs.net/doc/ff5764236.html,.saidi.job; 2. 3.import https://www.360docs.net/doc/ff5764236.html,mons.io.FileUtils; 4.import org.pentaho.di.core.KettleEnvironment; 5.import org.pentaho.di.core.database.DatabaseMeta; 6.import org.pentaho.di.core.exception.KettleDatabaseException; 7.import org.pentaho.di.core.exception.KettleXMLException; 8.import org.pentaho.di.core.plugins.PluginRegistry; 9.import org.pentaho.di.core.plugins.StepPluginType; 10.import org.pentaho.di.trans.TransHopMeta; 11.import org.pentaho.di.trans.TransMeta; 12.import org.pentaho.di.trans.step.StepMeta; 13.import org.pentaho.di.trans.steps.insertupdate.InsertUpdateMeta; 14.import org.pentaho.di.trans.steps.tableinput.TableInputMeta; 15. 16.import java.io.File; 17. 18./** 19. * Created by 戴桥冰 on 2017/1/16. 20. */ 21.public class TransDemo { 22. 23.public static TransDemo transDemo; 24. 25./** 26. * 两个库中的表名 27. */ 28.public static String bjdt_tablename = "test1"; 29.public static String kettle_tablename = "test2"; 30. 31./** 32. * 数据库连接信息,适用于DatabaseMeta其中一个构造器 DatabaseMeta(String xml) 33. */ 34.public static final String[] databasesXML = { 35. 36."" + 37."" + 38."bjdt" + 39."192.168.1.122" + 40."Mysql" +

kettle 使用中的一些常见问题

kettle 使用中的一些常见问题 问题1: 从excel 中抽取数据,插入到oracle 9 数据库中,报下面的错误. 2008/06/25 13:30:57 - 插入更新数据表.0 - Insert row: ![field1=1.3965E8, field2=1,798, field3=2002/05/27 00:00:00.000] 2008/06/25 13:30:57 - oracl - ERROR : java.sql.SQLException: ORA-01722: 无效数字2008/06/25 13:30:57 - oracl - ERROR : at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125) 原因: 从错误信息可以看出,字段"field2" 对应的数据是1,798,该字段在数据库中是Number 类型,Oracle 不能将1,798 格式的字符串转换为数字。 解决方法: 在【Excel输入步骤】-【字段】标签下对应的字段设置为正确的类型。将"field2" 设置为"Number" 类型(默认是String 类型)。 问题2: 由sqlserver 向mysql 迁移数据, 迁移以后的数据是乱码 原因: 这是由于mysql 的默认编码是utf-8, 而中文环境下客户端的默认编码一般都是gbk 或gb18030, 由于客户端和服务器编码不一样导致保存到mysql 的数据是乱码 解决方法: 在新建连接窗口中有一个选项(option) 标签, 在这个标签下可以设置数据库的一些连接参数. 在这里我们要设置mysql 的客户端编码参数, 参数名characterEncoding, 参数值gbk. 问题3: 在SQLServer 表输入步骤中使用以问号作为参数的sql 语句(参数的值从以前的步骤中获得),向mysql 数据库导入数据(使用mysql 表输出步骤). 在执行的时候报告错误Unable to get queryfields for SQL: AND e.LOCAL_TIME>? 00909 PRS INC Invalid character. 原因: 从错误语句看,是参数没有被替换掉, 因为发送给mysql 服务器的是这样的语句"AND e.LOCAL_TIME>?". 参数没有被替换掉是因为从以前步骤中读取的参数值是null. 解决方法: 增加对null 值的判断, 可以有两种方法, 如果这个值是从数据库获取的,一般的数据库都提供了处理null值的函数,如mysql 的ISNULL 函数. 如果这个值是从其他步骤获得的,可以通过Javascript 步骤进行判断并转换. 问题4: 使用PDI 3.x 版本连接DB2 数据库时会报下面的错误 Error connecting to database: (using class com.ibm.db2.jcc.DB2Driver) encoding not supported!!

施工日志填写范例样本

填写要求 一、施工日志是重要的工程施工技术履历档案, 应按单位或单项工程分别单独填写, 并纳入竣工文件。 二、施工日志由工程( 点) 施工负责人或技术负责人按规定内容逐页连续填写, 不得隔日、跳日或断日填写; 字迹工整清晰, 不得涂改; 应采用黑色签字笔书写, 不得使用其它墨汁书写或电脑打印; 对记录问题的地方应在”备注”栏中用”*”标识并注明纠正和验证情况的记录页码。 三、施工日志记录应详略得当, 突出重点, 着重记录与工程质量形成过程有关的内容, 确保工程质量具有可追溯性, 与工程施工和质量形成无关的内容不得写入其中。 四、填写内容至少应包括: 1、在首页上单独描述本工程的基本概况。主要包括设计概况、主要施工负责人、技术负责人、质检工程师、监理工程师、开工及竣工日期以及简要的工程形象示意图等。 2、按施工先后顺序如实记录工程形成的全过程: ( 1) 施工期内每日气候、施工方法、劳力布置、机械配置、施工操作、施工进度和工程地质变化情况。 ( 2) 相关工作记录, 如现场取样、检测、测量、技术交底等, 并应与相关资料进行现场核对, 防止差、错、漏、缺、误记现象, 确保相关资料的一致性。 ( 3) 工序检查、隐蔽工程检查验收情况及检查验收结论。

( 4) 每日使用的主要材料规格、数量及检测结果。 ( 5) 施工中遇到的重大技术问题, 变更设计、主要工程材料代用等所采取的主要措施和效果记录。 ( 6) 施工中发生的工程质量事故和处理改进情况记录。 ( 7) 停工及原因( 停工期间重要事件应记录) 。 ( 8) 上级人员检查时提出的有关质量要求、发现的问题及相关指令, 施工中存在的问题及整改情况。 ( 9) 施工中采用的新工艺、新材料、新设备、新技术情况。 ( 10) 其它与工程施工和质量形成有关的情况。 3、施工日志中记录的问题必须有纠正和验证记录, 做到问题闭合。 施工日志范例说明 1、本次施工日志范例编写参照兄弟单位经验进行编写, 范围包括: 钻孔桩施工、承台施工各工序; 2、编写过程中没有写到的内容: (1)未考虑现场实际施工情况出现的工序间隔时间所需要连续编写的内容。 (2)施工中遇到的变更设计等内容。 (3)上级检查时提出的有关质量要求, 发现的问题, 整改情况等内容。

施工日志模板

施工日志模板 标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-

施工日志 日期:年 7 月 13 日星期三 2、请于每日下班前填写,如遇紧急情况或外出,请于次日补回。

施工日记管理方法 一、填写施工日记的要求 1、施工日记应按单位工程填写。 2、记录时间:从开工到竣工验收时止。 3、逐日记载不许中断。 4、按时、真实、详细记录,中途发生人员变动,应当办理交接手续,保持施工日记的连续性、完整性。施工日记应由栋号工长记录。 施工日记应记录的内容。施工日记的内容可分为五类:基本内容、工作内容、检验内容、检查内容、其他内容。 二、基本内容 1、日期、星期、气象、平均温度。平均温度可记为XX℃—XX℃,气象按上午和下午分别记录。 2、施工部位。施工部位应将分部、分项工程名称和轴线、楼层等写清楚。、 3、出勤人数、操作负责人。出勤人数一定要分工种记录,并记录工人的总人数。 三、工作内容 1、当日施工内容及实际完成情况。 2、施工现场有关会议的主要内容。 3、有关领导、主管部门或各种检查组对工程施工技术、质量、安全方面的检查意见和决定。 4、建设单位、监理单位对工程施工提出的技术、质量要求、意见及采纳实施情况。 四、检验内容 1、隐蔽工程验收情况。应写明隐蔽的内容、楼层、轴线、分项工程、验收人员、验收结论等。 2、试块制作情况。应写明试块名称、楼层、轴线、试块组数。 3、材料进场、送检情况。应写明批号、数量、生产厂家以及进场材料的验收情况,以后补上送检后的检验结果。 五、检查内容 1、质量检查情况:当日砼浇注及成型、钢筋安装及焊接、砖砌体、模板安拆、抹灰、屋面工程、楼地面工程、装饰工程等的质量检查和处理记录;砼养护记录,砂浆、砼外加剂掺用量;质量事故原因及处理方法,质量事故处理后的效果验证。 2、安全检查情况及安全隐患处理(纠正)情况。 3、其他检查情况,如文明施工及场容场貌管理情况等。

Pentaho ETL工具Kettle转换实现原理

关于Pentaho ETL工具Kettle转换实现原理的研究·ETL和Kettle简介 ETL即数据抽取(Extract)、转换(Transform)、装载(Load)的过程。它是构建数据仓库的重要环节。数据仓库是面向主题的、集成的、稳定的且随时间不断变化的数据集合,用以支持经营管理中的决策制定过程。 Kettle 是”Kettle E.T.T.L. Envirnonment”只取首字母的缩写,这意味着它被设计用来帮助你实现你的ETTL 需要:抽取、转换、装入和加载数据;翻译成中文名称应该叫水壶,名字的起源正如该项目的主程序员MATT 在一个论坛里说的哪样:希望把各种数据放到一个壶里然后以一种指定的格式流出。 Kettle的四大块: Chef——工作(job)设计工具(GUI方式) Kitchen——工作(job)执行器(命令行方式) Spoon——转换(transform)设计工具(GUI方式) Pan——转换(trasform)执行器(命令行方式) Spoon 是一个图形用户界面,它允许你运行转换或者任务,其中转换是用Pan 工具来运行,任务是用Kitchen 来运行。Pan 是一个数据转换引擎,它可以执行很多功能,例如:从不同的数据源读取、操作和写入数据。Kitchen 是一个可以运行利用XML 或数据资源库描述的任务。通常任务是在规定的时间间隔内用批处理的模式自动运行。下面将具体介绍Pan,和Kitchen在ETL中的实现过程。 ·数据转换原理及具体实现过程 大致步骤如下:

转换的过程中(在windows环境下),首先会调用Pan.bat,这一步主要是做一些初始化,连接验证,环境设置,检查之类;然后在Pan的最后一步会调用launcher.jar包,这个包用于启动JDBC驱动,并向JDBC传入相关连接信息和参数,然后开始传数据,最后是完成数据传输,关闭相关协议,写入日志。 首先来看Kitchen的实现,Kitchen在一个job中一般包含以下几个步骤: 转换:指定更细的转换任务,通过Spoon生成。通过Field来输入参数; SQL:sql语句执行; FTP:下载ftp文件; 邮件:发送邮件; 检查表是否存在; 检查文件是否存在; 执行shell脚本:如dos命令。 批处理:(注意:windows批处理不能有输出到控制台)。 Job包:作为嵌套作业使用。 SFTP:安全的Ftp协议传输; HTTP方式的上/下传。 以下是一个简单的ETL过程:

kettle转换步骤的类型功能

文本文件输入(text input):读取大量不同的文本文件。大多是通过工具生成的CSV文件。 表输入(table Input):常用来利用连接和SQL,从数据中读取信息,自动生成基本的SQL语句。 获取系统信息(get system info):这个步骤从Kettle 环境中获取信息。 生成行(Generate Rows ):这个步骤输出一定数量的行,缺省为空。可选包括一定数量的静态字段。 Cube输入(文件反序列化)(De-serialize from file):从二进制Kettle Cube 文件中读取数据行。备注:这个步骤仅仅用来存储短期数据。不同版本之间不保证文件的格式一样。 XBase输入:使用这一步可以读取大多数被称为XBase family派生的DBF文件。 Excel输入:利用这个步骤可以从Kettle 支持的系统的Excel文件里面读取数据。 XML输入:这个步骤允许你读取存储在XML 文件中的数据。它也提供一个接口,你可以定义你想读取的文件名、XML 文件的数据重复部分、获取的字段等。你可以指定元素或属性字段。 获取文件名(Get File Names):这个步骤可以获取系统的文件名信息。 文本文件输出(Text File Output): 表输出(Table output):这个步骤可以存储信息到数据库表中。 插入/更新(Insert/Update):这个步骤利用查询关键字在表中搜索行。如果行没有找到,就插入行。如果能被找到,并且要被更新的字段没有任何改变,就什么也不做。如果有不同,行就会被更新。 更新(Update ):这个步骤类似于插入/更新步骤,除了对数据表不作插入操作之外。它仅仅执行更新操作。 删除(Delete):这个步骤类似于上一步,除了不更新操作。所有的行均被删除。 Cube output(序列化到文件)(Serialize to file):这一步骤存储数据到一个二进制文件。这个步骤有个优势就是回读的时候,文本文件的内容不需要解析。这是因为元数据也同时存储在CUBE 文件里面。 XML输出:这个步骤允许你从源中写入行到一个或者多个XML 文件。 EXCEL输出:利用这个步骤,在Kettle 支持的系统中,你可以写入数据到一个或者多个

开源ETL工具kettle系列之动态转换

摘要:本文主要讨论使用Kettle来设计一些较为复杂和动态的转换可能使用到的一些技巧,这些技巧可能会让你在使用Kettle的时候更加容易的设计更强大的ETL任务。 动态参数的传递 Kettle 在处理运行时输入参数可以使用JavaScript 来实现,大部分工作只是按照一个模板来处理的 动态参数传递主要使用在像数据清理,调式,测试,完成复杂的条件过滤等等,这种方式一般不会在产品已经运行稳定了一段时间之后使用,因为我们一般仍然是做定时任务来自动转换数据,所以在开始介绍如何使用动态参数之前,希望大家能明白不要在产品数据库上做实验,即使你已经知道你的转换有什么影响并且做了备份,因为这种方法是不可能自动执行的。 Kettle有两种动态参数传递的方法,一种是非常轻量级的传argument , 另一种是对付较复杂一点情况使用JavaScript . 下面分别介绍这两种方法。 1. argument 当你在运行一个转换的时候,不管这个转换是一个Job的一部分还是只有这个转换,你都可以传递参数给它,当你运行一个转换的时候,会弹出一个Execution a Transformation 的对话框,让你选择执行转换的方式,本地执行,远程执行,分布式执行,下面就是日志记录的级别和回放时间,然后是argument 和variables 的设定。Argument 和variables 的区别在官方FAQ里面也有解释。你也可以参考一下官方的解释和下面解释的异同。 Q : Argument 和variables 的区别/ A : variables 也可以认为叫做environment variables , 就像它的名字一样,主要是用来设定环境变量的,比如最常见的:文件的存放地址,smtp的配置等等,你也可以把它认为是编程语言里面的全局变量,即使是不同的转换它们也拥有同样的值,而argument 自然就类似与局部变量,只针对一个特定的转换,比如像是限定结果集的大小和过滤条件。 取得argument的值 我们在转换之前设置了argument的值,需要用到的时候就使用get system info 步骤,这个步骤取得在运行时参数,需要注意的是我们是先设置get system info ,然后在里面决定要使用多少个参数,最多10个,每个参数名叫什么,然后我们才能在运行时看到你设置了的参数名后面跟一个要你输入的值,并且参数类型是不能够指定,全部都当作字符串处理,如果你需要对参数类型有要求,你需要自己转换,使用一个Mapping步骤或者Select values步骤。 取得variable的值 Variable 的值个数不受限制,你可以在kettle菜单的set environment里面设置,也可以使用文件储存这些值,在第一次运行kettle之后,kettle会在%HOME_USER_FOLDER%菜单里面创建一个 .kettle文件夹,如果是windows 用户可能就是C:\Documents and Settings\${your user name}\.kettle这个文件夹,如果是linux用户可能就是/home/${your user name }/.kettle文件夹,这个文件夹下面有kettle.properties文件,如果你打开这个文件,你会发现里面有一些以#开头的注释,其中设置了一些像是:PRODUCTION_SERVER = Hercules 这样的键值对,你可以自己定义一些环境变量比如像是smtp的地址,ftp服务器的地址,你放log文件的目录名等等,当然不能直接编辑这个文件就设置环境变量,要先设置KETTLE_HOME环境变量,windows就是点我的电脑,然后在设置path的那个地方添加一个KETTLE_HOME变量,linux就是export KETTLE_HOME=’一个目录’,这个目录可以任意地方,不过一般还是指向kettle的安装目录或是你自己的文档目录,然后启动kettle它会创建一个新的.kettle目录,编辑里面的kettle.properties文件就可以设置环境变量了. 2. 使用脚本 Kettle使用的是JavaScript来作为它的脚本实现,使用的是mozilla 的rhino 1.5r5版本实现,如果你打算

施工日志填写范本

施工日志 日期:2011_年4月1日天气:_晴_ 温度:8_ C?_28_ C 工序自检及试验检测情况: 检查路基边坡情况:坡比测量:1: 1.5 , 1 : 1.5 , 1: 1.5 坡顶高程:

检查抗滑桩情况:孔内净空截面尺寸: 2.26米X2.5米;2.26米X2.51米 钢筋接头搭接长度:33cm , 37cm , 35cm 钢筋保护层厚度: 钢筋间距: 孔底咼程:孔深: 安全、质量、环保、文明施工情况: 路基开挖、抗滑桩爆破施工时经过专职安全员检查后,无哑炮、毒害等情况后才进行下一步施工,抗滑桩施工人员安全帽等安全防护用具穿戴到位;抗滑桩机械设备检查无安全隐患后才安排施工。本日工程主体经自检、现场监理检查合格后才进行下一步施工,施工过程中监控到位,无质量隐患。本日施工现场采用洒水作业三次,施工现场无扬尘现场,现场清理到位,机械设备规整整齐,文明施工符合要求。 现场安全施工工人(含特种作业人员)100人,技术员2名,安全员1名,现场监理1 名 施工人员作业和机械设备使用情况: 土石方作业:空压机、风钻、220挖掘机、装载机、自卸汽车 抗滑桩作业:空压机、风钻、风镐、卷扬机 经开工前检查,空压机、挖掘机、装载机、自卸汽车、卷扬机等特种设备满足施工安全要求,所有操作人员均有特种作业许可。施工其间设备运行情况良好无不良情况发生。 材料进场及取样试验检测情况: ①32钢筋进场,并取样3组 ①32钢筋焊接接头取样2组,经项目部试验室试验,其焊接质量满足设计要求。 现场监理检查情况: 在抗滑桩钢筋报检中,现场监理提出部分钢筋绑扎不均匀,保护层垫块不够的情况 设计变更处理及新工艺采用情况: 无

kettle增量更新设计

kettle增量更新设计 ETL中增量更新是一个比较依赖与工具和设计方法的过程, Kettle中主要提供sert/ Update步骤, Delete步骤和 Database Lookup步骤来支持增量更新增量更新的设计方法也是根据应用场景来选取的,虽然本文讨论的是 Kettle的实现方式,但也许对其他工具也有一些帮助。 1、增量分类 应用场景增量更新按照数据种类的不同大概可以分成: 1、增加,不更新 2、更新,不增加 3、即增加也更新 4、有删除,有增加,有更新 其中1,2,3种大概都是相同的思路,使用的步骤可能略有不同,通用的方法是在原数据库增加一个时间戳,然后在转换之后的对应表保留这个时间戳,然后每次抽取数据的时候,先读取这个目标数据库表的时间戳的最大值,把这个值当作参数传给原数据库的相应表,根据这个时间戳来做限定条件来抽取数据,抽取之后同样要保留这个时间戳,并且原数据库的时间戳一定是指定默认值为date当前(以原数据库的时间为标准),抽取之后的目标数据库的时戬要保留原来的时间戳,而不是抽取时候的时间。 对于第一种情况,可以使用 Kettle的 Insert/ Update步骤,只是可以勾选Don' t perform any update选项,这个选项可以告诉 Kettle你只会执行 Insert步骤。 对于第二种情況可能比较用在数据出现错误然后原数据库有一些更新,相应的标数据库也要更新,这时可能不是更新所有的数据,而是有一些限定条件的数排你可以使用 Kettle 的 Update步骤来只执行更新。关于如何动态的执行限定条件,可以参考前一篇文章。 第三种情况是最为常见的一种情況,使用的同样是 Kettle的 Insert/ Update步骤,只是不要勾选Don' t perform any update选项第四种情況有些复杂,后面专门讨论:对于第1,2,3种个以参考下面的例子这个例子假设原数据库表为 customers,含有一个id, firstname,1 astnameage字段,主键为id,然后还加默认值为 sysdate的时间戳字段。转换之后的结果类似:id, firstname,1 astname,age, updatedate.整个设计流程大概如: 其中第一个步骤的sql 大概如下模式: Select max(updatedate) from target_customer ; 你会注意到第二个步骤和第一个步骤的连接是黄色的线,这是因为第二个table input 步骤把前面一个步骤的输出当作一个参数来用,所有Kettle用黄色的线来表示,第二个table input 的sql 模式大概如下: Select field1 , field2 , field3 from customers where updatedate > ? 后面的一个问号就是表示它需要接受一个参数,你在这个table

施工日志格式

施工日志格式 施工日志格式说明 扉页:书写本工号的工程简介、建设单位、设计单位、监理单位等内容。 1.工作内容及分工情况(第一页填写工程概况及总工程量) 本单位工程每天的工作内容、施工里程、部位、工程数量、施工详细情况、施工工艺、人员及主要机具设备情况、现场施工负责人、现场技术负责人和安全质量负责人。 例如:8:00-20:00,第二节C30混凝土基础浇筑,共计12平方米,混凝土采用商品混凝土,罐车运输,溜槽直接浇注。现场施工负责人:***,现场技术负责人:***,安质负责人:***。 2.质量情况 自检当日工作内容的质量描述。 例如:基础标高实测*m,…,几何尺寸实测*m,…,钢筋间距*m,…,保护层采用同标号混凝土垫块,…等,全部满足设计和验标要求,混凝土质量符合配合比要求。 特别是监理指令、业主和质量监督等部门提出的质量问题要有体现并在规定的日期体现已整改完毕。3.安全情况 当日工作内容的施工安全描述,包括环境安全因素、施工安全因素、采取安全措施及其效果等,好坏都要进行描述。 例如:基坑开挖,人工配合机械进行,靠近既有线侧用钢轨桩和钢模

板进行加固;人工清理基坑时全部佩戴安全帽;在上下行方向分别设防护员;不存在安全隐患。 特别是监理指令、业主和质量监督等部门提出的安全隐患要有体现并在规定的日期体现已整改完毕。 4.取样、试验情况钢筋、水泥、砂、碎石、外加剂取样情况,要和进料情况相对应;混凝土试件制作及塌落度、含气量等检测情况;泥浆测试情况,要和工作内容相对应。 例如:钢筋取样*组,…,混凝土试件制作*组,实测塌落度分别为*组,…,含气量分别为*,…。监理到场取*平行试件。 5.隐检、验收、技术检查情况日常自检、监理、业主、地方监督机构等检查情况。 例如:*自检工程师自检全部合格;*监理到场检查并旁站;*(业主或监督部门领导)到现场检查。 6.材料、构件、机具设备进退场情况 当日的进料类型、数量和取样情况相对应;机械设备进退场情况。例如:进场1-2cm碎石*m3,42.5水泥*T,∮16钢材*T等。 7.发生停工情况如有停工要有停工的原因。 如:质量或安全隐患、停电、老百姓阻工情况等。 8.文明施工(环境)情况现场文明施工情况描述。 9.加班情况 正常倒班、节假日加班情况。

施工日志表格式样

施工日志 工程名称: 施工里程: 施工单位: 记录人: 开工日期:年月日 竣工日期:年月日 (第册共册) 注:施工单位栏需加盖公章;本页记录人为项目负责人,后逐页记录人为现场记录人。

施工日志 第页共页 记录人 工程日志内容包括:基本内容、工作内容、检查内容、其它内容。(1)基本内容: 1)日期、星期、气象、平均温度。 2)施工部位。施工部位应将分部、分项工程名称和部位写清楚;

3)出勤人数、操作负责人。出勤人数要分工作记录,并记录工人和 总人数。 (2)工作内容 1)当日施工内容及实际工程进度或完成工程量的情况,以及劳动 力、机械设备及材料情况; 2)施工现场有关会议的主要内容; 3)有关领导、主管部门或各级检查组对工程施工技术、质量、安全 方面的检查意见和决定; 4)建设单位、监理单位对工程施工提出的技术、质量要求、意见及 采纳实施情况。 (3)检查内容 1)隐蔽工程检查情况。应写明隐蔽的内容、分项工程、验收人员、 验收结论等; 2)试块制作情况。应写明试块名称、部位、试块组数; 3)材料进场、送检情况。应写明批号、数量、生产厂家以及进场材 料的验收情况,以后补上送检后的检验结果; 4)质量检查情况:地址描述、当日混凝土浇筑及成型、钢筋安装及 焊接、模板安拆等的质量检查和处理记录;混凝土养护记录,砂浆、混凝土外加剂参用量;质量事故原因及处理方法,质量事故处理后的效果验证; 5)参加施工的人员、施工方法、机具设备情况; 6)安全检查情况及安全隐患处理(纠正)情况;

7)工程进度情况; 8)测量放样情况; 9)上级、监理、建设单位或地方政府在此的活动情况; 10)其它检查情况,如文明施工及场容场貌管理情况等。 (4)其它内容: 1)设计变更、技术核定通知及执行情况; 2)施工任务交底、技术交底、安全技术交底情况; 3)停电、停水、停工情况; 4)施工机械故障及工程施工中存在的问题和处理情况; 5)冬雨季施工准备及措施执行情况; 6)施工中涉及到的特殊措施和施工方法、新技术、新材料的推广使 用情况。

kettle之多表数据复制

kettle之------ 多表数据复制 需求:把A库中N个表抽取至B库中,表结构相同或只是增加统一的一些字段,过滤条件基本类似。 解决方法: 我们把以上内容在解决问题上拆分为二步, 1,从一配制表中读出相应的表名及过滤条件,存于一结果。 2,根据第一步的结果,一条条循环来进行取数插数的过程。 以上过程相当简单,以下为讨论的实现方式。 1,如果是ORACLE同字符集,用DBLINK结合着存储过程,写一个通用的程序很容易搞定,只需要建立一个表名及过滤条件的配制表(在此就不多说了)。 2,用ETL工具实现,据我所知,以infa为例,它以字段为对应关系,且它的流程内部循环相当困难,曾经我们有个项目,infa就是硬生生的画了一二百个mapping(的确,不会累死人,但看着相当不爽,当然,欢迎提供好的方案), 在此,我们以kettle为例进行分析,如何解决这个问题(先抛开性能,kettle的确是个好东西) 1),主流程大概是如下这样的 在此,我们再看一下第一组件(得到多表表名)里面内容, 我们再看一下得到表名中的内容

这其中的sql只是模拟一个得到表名的sql,可灵活使用,这个组件其实就完成了把要抽取的表放入一个结果集中了。 我们再看第二个组件(表迁移) 就是一个取数一个插数的过程。 再看一下它们的内容 在此就完成了,但是,我们主job设置(表迁移)组件时,也就是把前面的内容当后面的参数循环执行。

基本就是如此,另,记得在各主流程及二转换中都设置tt_tab这个参数。 说了这么多,其实很简单。如果你是要做数据库表复制的话,kettle有其它的方式,可以根据工具-》向导-》复制表向导完成。 以上这种适应的是,可实现一些sql的拼接,且要增加减少表时只需求维护配制表了,相对来说会变的简单。。 kettle交流群87340451

正规项目施工日志填写范例

巴达铁路站前I标工程 施工日志 工程名称:张家湾隧道出口 施工里程: DK42+660-DK44+542 施工单位:中铁七局巴达铁路站前I标 开工日期: XXXX年XX月 XX日 竣工日期: XXXX年 XX月 XX日 (第X册共X册) 中铁七局巴达铁路站前I标工程项目部

填写要求 一、施工日志是重要的工程施工技术履历档案,应按单位或单项工程分别单独填写,并纳入竣工文件。 二、施工日志由工程(点)施工负责人或技术负责人按规定内容逐页连续填写,不得隔日、跳日或断日填写;字迹工整清晰,不得涂改;应采用蓝黑色笔书写,不得使用其它墨汁书写或电脑打印;对记录问题的地方应在“备注”栏中用“*”标识并注明纠正和验证情况的记录页码。 三、施工日志记录应详略得当,突出重点,着重记录与工程质量形成过程有关的内容,确保工程质量具有可追溯性,与工程施工和质量形成无关的内容不得写入其中。 四、填写内容至少应包括: 1、在首页上单独描述本工程的基本概况。主要包括设计概况、主要施工负责人、技术负责人、质检工程师、监理工程师、开工及竣工日期以及简要的工程形象示意图等。 2、按施工先后顺序如实记录工程形成的全过程: (1)施工期内每日气候、施工方法、劳力布置、机械配置、施工操作、施工进度和工程地质变化情况。 (2)相关工作记录,如现场取样、检测、测量、技术交底等,并应与相关资料进行现场核对,防止差、错、漏、缺、误记现象,确保相关资料的一致性。 (3)工序检查、隐蔽工程检查验收情况及检查验收结论。 (4)每日使用的主要材料规格、数量及检测结果。 (5)施工中遇到的重大技术问题,变更设计、主要工程材料代用等所采取的主要措施和效果记录。 (6)施工中发生的工程质量事故和处理改进情况记录。 (7)停工及原因(停工期间重要事件应记录)。 (8)上级人员检查时提出的有关质量要求、发现的问题及相关指令,施工中存在的问题及整改情况。 (9)施工中采用的新工艺、新材料、新设备、新技术情况。 (10)其他与工程施工和质量形成有关的情况。 3、施工日志中记录的问题必须有纠正和验证记录,做到问题闭合。

kettle中通过 时间戳(timestamp)方式 来实现数据库的增量同步操作(一)

kettle中通过时间戳(timestamp)方式来实现数据库的增 量同步操作(一) 这个实验主要思想是在创建数据库表的时候, 通过增加一个额外的字段,也就是时间戳字段, 例如在同步表tt1 和表tt2 的时候, 通过检查那个表是最新更新的,那个表就作为新表,而另外的表最为旧表被新表中的数据进行更新。 实验数据如下: mysql database 5.1 test.tt1( id int primary key , name varchar(50) ); mysql.tt2( id int primary key, name varchar(50) ); 快照表,可以将其存放在test数据库中, 同样可以为了简便,可以将其创建为temporary 表类型。数据如图kettle-1 kettle-1 ============================================== ==============

主流程如图kettle-2 kettle-2 在prepare中,向tt1,tt2 表中增加时间戳字段, 由于tt1,tt2所在的数据库是不同的,所以分别创建两个数据库的连接。 prepare kettle-3 在执行这个job之后,就会在数据库查询的时候看到下面的字段: kettle-4 然后,我们来对tt1表做一个insert 操作一个update操作吧~ kettle-5 在原表上无论是insert操作还是update操作,对应的updateTime都会发生变更。

如果tt1 表和tt2 表中updateTime 字段为最新时间的话,则说明该表是新表。 下面只要是对应main_thread的截图: kettle-6 在这里介绍一下Main的层次: Main START Main.prepare Main.main_thread { START main_thread.create_tempTable main_thread.insert_tempTable main_thread.tt1_tt2_syn SUCCESS } Main.finish SUCCESS

相关文档
最新文档