我有一个Talend作业,该作业在SQL Server数据库上运行查询,然后将选定的数据写入Postgres数据库。我正在使用tMap组件进行映射。SQL Server日期类似于2014-01-20 11:34:26.0
(在Talend中配置为““ yyyy-MM-dd HH:mm:ss.SSS””),而Postgres日期与yyyy-MM-dd类似。
运行作业时,出现以下异常:
[统计数据]已连接
批次条目0插入“ criticalcareepisodes”(“ GivenName”,“ FamilyName”,“ height”,“ weight”,“ mrn”,“ id”,“ admissiondate”)值(“ Adam”,“ Apple” ,100,200.0,123456,nextval('CriticalCareEpisodes_id_seq'),2009-11-10 21:30:00.000000 +11:00:00)被中止。调用getNextException以查看原因。
[统计数据]断开连接的
Job ExtractSLICCriticalCareEpisode于2014年9月27日14:06结束。[退出代码= 0]
似乎由于某种原因,日期没有按照我的预期格式化。显然,该异常与尝试将日期/时间推入Postgres Date类型有关-至少我认为是这样。我敢肯定,我在这里遗漏了一些明显的东西,但是我们会提供任何帮助。
我添加了一些图像,可能会有所帮助:
肯·汉普森(Ken Hampson)的答案涵盖了问题的Postgres部分:您正在尝试在日期字段中插入时间戳。
问题是您正在尝试在架构中“日期”类型配置的日期模式部分中指定预期的格式(yyyy-MM-dd)。Talend实际上始终保持完整的日期对象,并且日期模式仅用于Talend组件(例如tLogRow)的格式化目的,然后将以选定的格式打印日期。
要将日期正确转换为格式化的字符串,以便将其发送到Postgres(它将字符串隐式转换为日期),您需要将其替换row1.CCDateAdmit
为TalendDate.formatDate("yyyy-MM-dd",row1.CCDateAdmit)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句