需求说明:

Kettle对日期字段进行清洗转换,将不同日期格式的数据转换为标准格式YYYY-MM-DD,其他非标准的日期格式包括YYYY/MM/DD、YYYY/MM、YYYY年MM月、YYYY-MM、YYYYMM、YYYY年MM月DD日、DD-MM月-YYYY。

在这里插入图片描述

解决步骤:

1 在本地oracle中创建表以及插入相关数据

Create table date_check(tdate varchar2(20),date_check varchar2(20));
Truncate table date_check;
Insert into date_check(tdate) values('2020-04-27');
Insert into date_check(tdate) values('2020/04/27');
Insert into date_check(tdate) values('2020年04月');
Insert into date_check(tdate) values('2020-04');
Insert into date_check(tdate) values('202004');
Insert into date_check(tdate) values('2020年04月27日');
Insert into date_check(tdate) values('27-04月-2017');
Commit;

在这里插入图片描述

2 打开 kettle 与本地 oracle 进行连接
在这里插入图片描述
3.编写JavaScript代码
在这里插入图片描述

//Script here

var str = TDATE;
var strOut = "0000-00-00";

if(str != null){
	if(str.match("^[0-9]{4}/[0-9]{2}/[0-9]{2}$")){
		strOut = str.substring(0,4) + "-" + str.substring(5,7) + "-" + str.substring(8,10);
	}else if(str.match("^[0-9]{4}年[0-9]{2}月$")){
		strOut = str.substring(0,4) + "-" + str.substring(5,7) + "-01";
	}else if(str.match("^[0-9]{4}-[0-9]{2}$")){
		strOut = str.substring(0,4) + "-" + str.substring(5,7) + "-01";
	}else if(str.match("^[0-9]{6}$")){
		strOut = str.substring(0,4) + "-" + str.substring(4,6) + "-01";
	}else if(str.match("^[0-9]{4}年[0-9]{2}月[0-9]{2}日$")){
		strOut = str.substring(0,4) + "-" + str.substring(5,7) + "-" + str.substring(8,10);
	}else if(str.match("^[0-9]{2}-[0-9]{2}月-[0-9]{4}$")){
		strOut = str.substring(7,11) + "-" + str.substring(3,5) + "-" + str.substring(0,2);
	}else{
    	strOut = str;
	}
}else{
	strOut = "0000-00-00";
}

在这里插入图片描述
点击SQL创建一个表结构
然后运行启动 运行成功后 发现本地oracle中会生成一个新的校验好的表
在这里插入图片描述

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐