[Kettle] CST时间格式转yyyy-MM-dd HH:mm:ss格式
最近做需求遇到一个问题,上游给了一个.dat 加密文件,解密后发现有个时间戳字段是用CST格式存储,举例:Thu Jul 22 00:58:32 CST 2010, 但是目标表字段数据类型设计成timestamp格式,要用Kettle 抽取数据,刚开始直接对这个字段数据类型转为 Date 类型,格式为 yyyy-MM-dd HH:mm:ss,经过反复测试发现不行。
于是另谋出路 能否用Kettle 中的 Java代码 和JavaScript 代码组件实现呢,摸索之后,最终采用
JavaScript组件实现。
数据源:
本次测试用date.csv文件作为数据源,csv文件存储的CST时间数据格式如下:
目标表:
PostgreSQL库创建目标表,用来接收。
create table t_string_conver_to_date(join_date timestamp without time zone );
ETL 程序设计程序
文本文件输入: 配置读取的文件为 date.csv,接收的字段IN_DATE,数据类型为String,注:这里不能设置为Date类型
JavaScript代码: 主要是将CST格式转换成yyyy-MM-dd HH:mm:ss格式。
//自定义函数
function dateFormat (date, format) {date = new Date(date);date.setHours(date.getHours()-14);var o = {'M+' : date.getMonth() + 1, //month'd+' : date.getDate(), //day'H+' : date.getHours(), //hour'm+' : date.getMinutes(), //minute's+' : date.getSeconds(), //second'q+' : Math.floor((date.getMonth() + 3) / 3), //quarter'S' : date.getMilliseconds() //millisecond};if (/(y+)/.test(format))format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));for (var k in o)if (new RegExp('(' + k + ')').test(format))format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length));return format;
}var DATE_OUT = dateFormat(IN_DATE,"yyyy-MM-dd HH:mm:ss") //函数调用,输出字段资格,IN_DATE为文本文件传过来的数据流
设置如下,用DATE_OUT接收,类型为String。
字段选择: 字段选择是将 DATE_OUT 强转为 DATE类型,并且格式为yyyy-MM-dd HH:mm:ss。
表输出: 将DATE_OUT数据写入到目标表 t_string_conver_to_date.join_date 字段。
以上步骤都设置到了,启动Kettle 转换程序,然后查看表数据,验证OK。
[Kettle] CST时间格式转yyyy-MM-dd HH:mm:ss格式相关推荐
- Kettle5.2 couldn't convert string [...] to a date using format [yyyy/MM/dd HH:mm:ss.SSS]
使用kettle出现 couldn't convert string [...] to a date using format [yyyy/MM/dd HH:mm:ss.SSS] 试了各种方法,最后发 ...
- 【怒怼老乔】苹果手机ios系统居然特喵的不支持日期yyyy-MM-dd HH:mm:ss.ms,只支持 yyyy/MM/dd HH:mm:ss
苹果手机ios系统居然特喵的 不支持日期yyyy-MM-dd HH:mm:ss.ms, 只支持yyyy/MM/dd HH:mm:ss 我只能用 .replace(/\-/g,'\/'); 来替换掉了, ...
- C# 中的年月日时分秒 yyyy MM dd HH mm ss
C# 中的年月日时分秒 yyyy MM dd HH mm ss 其中大小写含义不同,不能混用 年:yyyy 月:MM 日:dd(1-31) DD(0-365) 时:hh:12小时制 HH:24小时制 ...
- 时间格式区别之YYYY/MM/dd HH:mm 与 yyyy/MM/dd HH:mm
1. 相应的业务场景 1.1 场景简介 正值2019年末,2020年初之际,系统日期时间为2019/12/31而系统报表却出现了2020/12/31的日期. 1.2 代码案例如下 2.Java中YYY ...
- spring boot + vue 前后端分离时间戳转换为 yyyy:MM:dd HH:mm:ss格式
后端 1.model(entity)注释直接转换 当返回类型为resultMap,在entity类里面相应属性上加上以下注释 @JsonFormat(pattern="yyyy-MM-dd ...
- js时间格式化 YYYY/MM/DD HH:MM:SSS
/*** 将"2018-05-19T08:04:52.000+0000"这种格式的时间转化为正常格式* @param time*/ function timeFormat(time ...
- 小程序日期格式(yyyy-MM-dd HH:mm:ss)转(yyyy/MM/dd HH:mm:ss)
let newDate = (date).replace(/-/g, '/'); var date = new Date(newDate).getTime(); 转载于:https://www.cnb ...
- java 通配符 日期_java – 使用带有通配符支持的SimpleDateFormat解析日期字符串(例如* yyyy * MM * dd * hh * mm * ss)...
首先,我想知道是否存在类似于SimpleDateFormat但是支持通配符的现有库?如果没有,最好的办法是什么? 我有这个问题,我需要匹配并从文件名中提取日期,但我似乎无法找到适合这种情况的方法.虽然 ...
- java date eee_java将 Date原始格式EEE MMM dd HH:mm:ss Z yyyy转成指定格式
java将 Date原始格式"EEE MMM dd HH:mm:ss Z yyyy"转成指定格式 //将 Date原始格式"EEE MMM dd HH:mm:ss Z y ...
- 年月日格式判断-正则表达式 YYYY/MM/DD、YYYY/MM/DD| YY/MM/DD、 ^(^(\d{4}|\d{2})(\-|\/|\.)\d{1,2}\3\d{1,2}$)|(^\d{4}…
一.简单的日期判断(YYYY/MM/DD): ^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$ 二.演化的日期判断(YYYY/MM/DD| YY/MM/DD): ^(^(\d{4}| ...
最新文章
- html正则表达式确认密码,如何使用正则表达式在流星中验证确认密码
- 跟面试官聊到JVM,他99%会让你谈谈这个问题!
- echo和print 的区别
- 从技术视角看考拉海购的云原生之路
- [html] 写一个布局,当页面滚动一定高时,导航始终固定在顶部,反之恢复原位
- php排序算法算法,PHP排序算法之基数排序(Radix Sort)实例详解
- BitMEX将调整Impact Notional和Index Price Protection两个参数
- Eclipse ADT 使用空格替代Tab键缩进整块整块代码
- Quartz简单理解
- 推荐一些经典的编程从入门到进阶的书籍-附下载资源
- 16款最佳的 jQuery Time Picker 时间选择插件
- 在虚拟机、Mac 电脑和旧电脑上绕过 TPM 安装 Windows 11 的方法总结(提供通用无 TPM 检测镜像下载)
- react脚手架配置
- Unity ASE点光源不显示的问题
- 抽象与具体,形而上者谓之道,形而下者谓之器
- 模态框间相互传输数据
- ElasticSearch 升级过程中给涉及到的术语-1、同步刷新synced flush
- Myeclipse中java文件注释格式设置
- 【2023最新】32个web前端实战项目,练完即可就业,从入门到进阶,基础到框架,你想要的全都有,建议码住!
- Android 简易QQ登录页面
热门文章
- 【Html + Js + CSS——电流壁纸(源码+特效)】
- Java实现的经典坦克大战小游戏
- 韩剧机器人题材的_来盘点一下2018年里面吸引人的十部韩剧
- vintage、迁移率、滚动率、入催率等概念——看完你就懂了
- 如何获取iOS 设备的 UDID
- 【srs】FLV的VideoTag转SrsFrame
- 计算机等级证书怎么考
- MAPICS系统简单概述(zt)
- 最新QT从入门到实战完整版(07 对象树)
- python微信验证码_python:代码访问weixin.sogou.com的时候会出现验证码,但是浏览器打开就不会...