写给自己的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,”的文章


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

查看所有标签

猜你喜欢:

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

HTML5经典实例

HTML5经典实例

Christopher Schmitt、Kyle Simpson / 李强 / 中国电力出版社 / 2013-7 / 48.00元

《HTML5经典实例》对于从中级到高级的Web和移动Web开发者来说是绝佳之选,它帮助你选择对你有用的HTML5功能,并且帮助你体验其他的功能。个技巧的信息十分丰富,都包含了示例代码,并详细讨论了解决方案为何有效以及如何工作。一起来看看 《HTML5经典实例》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具