ETL工具(kettle)使用系列(二)

本章介绍一些kettle技巧和相关的问题解决方案

kettle数据抽取中文乱码(一)


spoon.bak文件找到if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms1024m" "-Xmx2048m" "-XX:MaxPermSize=256m"这个后面添加 `"-Dfile.encoding=UTF-8"

kettle处理中文乱码问题(二)

在kettle脚本相关地方增加一个java组件处理脚本,java组件代码如下

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {
  if (first) {
    first = false;

  }

  Object[] r = getRow();

  if (r == null) {
    setOutputDone();
    return false;
  }

  r = createOutputRow(r, data.outputRowMeta.size());

  String sickname = get(Fields.In, "SICKNAME").getString(r);
  if(sickname != null && !"".equals(sickname)) {
    try {
			sickname = new String(sickname.getBytes("ISO-8859-1"), "GBK");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	 
  }
  get(Fields.Out, "SICKNAME").setValue(r, sickname);

  putRow(data.outputRowMeta, r);

  return true;
}

详细脚本:[脚本处理中文乱码](http://note.youdao.com/noteshare?id=c0e5290d9830f8b3b87c03a3b46b6497)

cmd运行test.kjb脚本

E:
cd E:\software\servers\sql\kettle7.1.0\data-integration
Kitchen /file:E:\software\servers\sql\kettle7.1.0\data\dbjob.kjb /level:Basic>C:\Users\thinkpad\Desktop\kettle\kettle-job.log

性别1,2转换为男女,用javaScript脚本

//Script here
//loop through the actual row
for (var i=0;i<getInputRowMeta().size();i++) {
  // Grab the metadata for this value
  var valueMeta = getInputRowMeta().getValueMeta(i);
  if (valueMeta.getName().equals("SEX")) {
  	row[i]=replace(row[i],'1','男');
	row[i]=replace(row[i],'2','女');
  }
}

date类型和string类型相互转换,格式化date

用字段选择:如下图
date和string雷翔相互转换,格式化date

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GeekPlusA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值