如何使用kettle对日期进行数据清洗,以达到统一规范格式?
·
需求说明:
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中会生成一个新的校验好的表

更多推荐
所有评论(0)