写给自己的Kettle笔记9

栏目: 数据库 · 发布时间: 5年前

内容简介:====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========在作业里,有很多功能

====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========

35 作业->FTP上传/下载

在作业里,有很多功能

FTP上传

写给自己的Kettle笔记9

然后设置文件

写给自己的Kettle笔记9

文件传输里还有很多

写给自己的Kettle笔记9

FTP下载

写给自己的Kettle笔记9

FTP删除

写给自己的Kettle笔记9

FTPS的上传,其他几个自己看

写给自己的Kettle笔记9

36 全局变量

在用户的.kettle文件夹下有个kettle.properties

写给自己的Kettle笔记9

记事本打开,编写全局变量

写给自己的Kettle笔记9

然后保存,重启spoon

拖一个获取变量

写给自己的Kettle笔记9

然后写日志,测试结果,可以拿到全局变量了

写给自己的Kettle笔记9

测试数据库连接

写给自己的Kettle笔记9

很神奇的是,密码那里,我输入的是 ${DBPWD} 竟然也可以

37 自己看下日志方面的,集群,大数据方面的应用吧,到此ay写差不多了,不想研究了。

====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========

1.尽量使用数据库连接池

2. 尽量提高批处理的commit size

3. 尽量使用缓存,缓存尽量大一些(主要是文本文件和数据流)

4. Kettle 是 Java 做的,尽量用大一点的内存参数启动Kettle.

5. 可以使用 sql 来做的一些操作尽量用sql

6. Group , merge , stream lookup ,split field 这些操作都是比较慢的,想办

法避免他们.,能用sql 就用sql

7. 插入大量数据的时候尽量把索引删掉

8. 尽量避免使用update , delete 操作,尤其是update , 如果可以把update

变成先delete , 后insert .

9. 能使用truncate table 的时候,就不要使用delete all row 这种类似sql

10. 合理的分区

11. 如果删除操作是基于某一个分区的,就不要使用delete row 这种方式(不

管是delete sql 还是delete 步骤),直接把分区drop 掉,再重新创建

12. 尽量缩小输入的数据集的大小(增量更新也是为了这个目的)

13. 尽量使用数据库原生的方式装载文本文件(Oracle 的sqlloader , mysql 的

bulk loader 步骤)

14. 尽量不要用kettle 的calculate 计算步骤,能用数据库本身的sql 就用sql ,不

能用sql 就尽量想办法用procedure , 实在不行才是calculate 步骤

执行效率和复杂度 :

 删除和更新都是一项比较耗费时间的操作,它们都需

要不断的在数据库中查询记录,执行删除操作或更新

操作,而且都是一条一条的执行,执行效率低下也是

可以预见的,尽量可能的缩小原数据集大小。减少传

输的数据集大小,降低ETL的复杂程度

 时间戳方法的一些优点和缺点:

 优点: 实现方式简单,很容易就跨数据库实现了,运

行起来也容易设计

 缺点: 浪费大量的储存空间,时间戳字段除ETL过程

之外都不被使用,如果是定时运行的,某一次运行失

败了,就有可能造成数据有部分丢失

kettle没有事务

双击一个转换中可以设置"杂项"中选中“使用唯一连接”,表示

该转换和数据库是一个session,有多个分支的话,执行失败数

据就会回滚

遇到“只有一个输入记录期待设置变量并且至少已经收到2个变

量.”的问题:这个问题是我在表输入的时候给sq一次l传入了多

个值(相当于多条记录的id值),然后在更新完表之后又设置了

“设置变量”,这时候由于一次查出多条记录,“设置变量”里

不知道到底去取这些记录的哪条里的信息,所以会报这个错。

② 在写kettle脚本的时候遇到最多的问题就是类型转换问题,如:

"java.sql.Timestamp cannot be cast to java.lang.Long“

,这是日期字段不为空没问题,但是有值就会报这个转换问题;

或者Unexpected conversion error while converting value

[N_YSFJFJ Integer(9)] to an Integerjava.math.BigDecimal

cannot be cast to java.lang.Long

这类问题都是在要“更新/插入”之前使用了多个”表输入“来

传值,貌似在传值的时候都将字段对应的值默认转为integer类

型的,所以要解决这类转换问题,要么在“更新/插入”的前一

个步骤添加js控件来强制转换所有可能出现问题的字段,要么在

”表输入“中的sql语句中使用case when 或者convert

推荐您阅读更多有关于“kettle,etl,”的文章


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

劫持

劫持

玛丽•K. 斯温格尔(Mari K. Swingle) / 邓思渊 / 中信出版集团股份有限公司 / 2018-5-1 / CNY 59.00

《劫持》是一本探讨人与科技的关系的书,基于一位心理学博士20年的临床经验及其作为神经认知科学研究者的脑—电研究成果。在这本面向大众的科普书中,作者以深入浅出的方式,探讨了手机、电脑等便携式数字设备及让人“永不下线”的互联网对现代人尤其是青少年大脑的影响,从神经认知科学和精神分析的角度,有力地证明了数字媒介与大脑和人类行为的关系,探讨了手机等如何对人的大脑进行劫持或操控,并给出了自己作为从业医师的实......一起来看看 《劫持》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具