kettle blob

kettle 除了作为 ETL 工具外,还有很多数据处理方面的实用功能,本文介绍几个实用的小功能。

1. 文件批量入库
该功能可以将一个目录下的全部或部分文件加载到数据库中。
流程图:

[@more@]

第一步: “获取文件名” 步骤获取一个目录下的文件名,使用一个正则表达式来指定文件名。


如上图,指定了 E:/opensource/kettle-trunk/ui/images 目录下所有以 .png 结尾的文件名。在这个步骤里创建了下面几个字段来描述所有获取的文件:

FILENAME, 
SHORT_FILENAME, 
PATH, 
TYPE, 
EXISTS, 
ISHIDDEN, 
ISREADABLE, 
ISWRITEABLE, 
LASTMODIFIEDTIME, 
SIZE, 
EXTENSION, 
URI, 
ROOTURI

第二步: 使用一个 javascript 脚本,读取文件内容,如果你不想把文件内容入库,可以不用这一步。下面是 javascript 脚本的内容:


file = new Packages.java.io.File(filename.getString()); 
fileInputStream = new Packages.java.io.FileInputStream(file);
var content = Packages.org.pentaho.di.core.Const.createByteArray(file.length());
fileInputStream.read(content, 0, file.length());
fileInputStream.close();

不要忘了,选中 “获取变量” 按钮,将 content 也作为一个输出字段, 类型 Binary。

第三步:“表输出”,将前两个步骤获得的字段,输出到数据库的表里。如果数据库里没有相应的表,需要使用 “SQL” 按钮获得并执行创建表的 SQL 语句。

通过这三个步骤可以将文件名,文件属性,文件内容都保存到数据库里,

如果文件是二进制文件,文件内容一般保存为 BLOB 、Binary 、Image 等类型。

如果文件是字符型文件,文件内容一般保存为 CLOB 、varchar、Text 等类型。

注意:因为该方法是一次性将文件内容都读到了内存中,因此只能处理比较小的文件。

待续

转自:http://blog.itpub.net/14366449/viewspace-1022413/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值