最近做需求遇到一个问题,上游给了一个.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格式相关推荐

  1. 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] 试了各种方法,最后发 ...

  2. 【怒怼老乔】苹果手机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,'\/'); 来替换掉了, ...

  3. 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小时制 ...

  4. 时间格式区别之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 ...

  5. spring boot + vue 前后端分离时间戳转换为 yyyy:MM:dd HH:mm:ss格式

    后端 1.model(entity)注释直接转换 当返回类型为resultMap,在entity类里面相应属性上加上以下注释 @JsonFormat(pattern="yyyy-MM-dd ...

  6. js时间格式化 YYYY/MM/DD HH:MM:SSS

    /*** 将"2018-05-19T08:04:52.000+0000"这种格式的时间转化为正常格式* @param time*/ function timeFormat(time ...

  7. 小程序日期格式(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 ...

  8. java 通配符 日期_java – 使用带有通配符支持的SimpleDateFormat解析日期字符串(例如* yyyy * MM * dd * hh * mm * ss)...

    首先,我想知道是否存在类似于SimpleDateFormat但是支持通配符的现有库?如果没有,最好的办法是什么? 我有这个问题,我需要匹配并从文件名中提取日期,但我似乎无法找到适合这种情况的方法.虽然 ...

  9. 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 ...

  10. 年月日格式判断-正则表达式 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}| ...

最新文章

  1. html正则表达式确认密码,如何使用正则表达式在流星中验证确认密码
  2. 跟面试官聊到JVM,他99%会让你谈谈这个问题!
  3. echo和print 的区别
  4. 从技术视角看考拉海购的云原生之路
  5. [html] 写一个布局,当页面滚动一定高时,导航始终固定在顶部,反之恢复原位
  6. php排序算法算法,PHP排序算法之基数排序(Radix Sort)实例详解
  7. BitMEX将调整Impact Notional和Index Price Protection两个参数
  8. Eclipse ADT 使用空格替代Tab键缩进整块整块代码
  9. Quartz简单理解
  10. 推荐一些经典的编程从入门到进阶的书籍-附下载资源
  11. 16款最佳的 jQuery Time Picker 时间选择插件
  12. 在虚拟机、Mac 电脑和旧电脑上绕过 TPM 安装 Windows 11 的方法总结(提供通用无 TPM 检测镜像下载)
  13. react脚手架配置
  14. Unity ASE点光源不显示的问题
  15. 抽象与具体,形而上者谓之道,形而下者谓之器
  16. 模态框间相互传输数据
  17. ElasticSearch 升级过程中给涉及到的术语-1、同步刷新synced  flush
  18. Myeclipse中java文件注释格式设置
  19. 【2023最新】32个web前端实战项目,练完即可就业,从入门到进阶,基础到框架,你想要的全都有,建议码住!
  20. Android 简易QQ登录页面

热门文章

  1. 【Html + Js + CSS——电流壁纸(源码+特效)】
  2. Java实现的经典坦克大战小游戏
  3. 韩剧机器人题材的_来盘点一下2018年里面吸引人的十部韩剧
  4. vintage、迁移率、滚动率、入催率等概念——看完你就懂了
  5. 如何获取iOS 设备的 UDID
  6. 【srs】FLV的VideoTag转SrsFrame
  7. 计算机等级证书怎么考
  8. MAPICS系统简单概述(zt)
  9. 最新QT从入门到实战完整版(07 对象树)
  10. python微信验证码_python:代码访问weixin.sogou.com的时候会出现验证码,但是浏览器打开就不会...