Talend 从字符串转换为 bigdecimal

Posted

技术标签:

【中文标题】Talend 从字符串转换为 bigdecimal【英文标题】:Talend convert to bigdecimal from string 【发布时间】:2014-12-09 17:19:53 【问题描述】:

我正在读取一个文本文件,该文件在时间戳中具有此格式 "yyyy-MM-dd HH:mm:ss" 的字段

我希望能够将它作为 BigInt 转换为 Impala 中的一个字段,并且应该像 Java 中的 yyyMMddHHmmss 一样。 按照这个链接: Java Timestamp to BigInt for Impala

我使用 talend 方法进行转换并这样做:

TalendDate.formatDate("yyyyMMddHHmmss",TalendDate.parseDate("yyyy-MM-dd HH:mm:ss",row5.StopTime))

这里的 StopTime 是我的时间戳。我首先将其解析为日期格式,然后将其解析为所需的格式。我有一个字符串。

具有 DBType BigInt 的 impala 表具有 JavaType BigDecimal。

如何将我拥有的字符串转换为 BigDecimal。不是 DBtypesof 模式不匹配。

提前致谢!

【问题讨论】:

很确定 BIGINT 只是一个 Long,不是吗? 我是这么认为的。如果我离开它,我得到一个错误,说 DBtype 不匹配:( 错误还是警告?如果它只是一个警告,您可以忽略它并假设 Talend 为组件设置了错误的数据类型映射。我得到了一些东西,比如当我想从数据库中提取日期时间字段作为字符串而不是日期时。 这是一个警告。我试图忽略它,但它没有完成该过程并且也停止了进一步的组件。它显示它正在将行复制到数据库中,但最终在很长一段时间后,它说输入链接中的模式不匹配。所以我尝试从 dbconnection 导入模式,它提到该类型是 Bigdecimal,因此这种将变量更改为 BigDecimal 的解决方法。 我认为这是一个导入问题?我尝试使用全名 java.math.BigDecimal 它说 java.math.BigDecimal 无法解析为类型。 【参考方案1】:

假设我正确理解了您的问题,您只想从 String 实例化 BigDecimal,在这种情况下:

new BigDecimal(TalendDate.formatDate("yyyyMMddHHmmss",
                        TalendDate.parseDate("yyyy-MM-dd HH:mm:ss",row5.StopTime)))

【讨论】:

我做同样的事情,我得到一个错误,说 BigDecimal 不能被解析成一个类型 您需要发布更多详细信息。 BigDecimal 是核心 API 的一部分,解决它应该没有任何问题。

以上是关于Talend 从字符串转换为 bigdecimal的主要内容,如果未能解决你的问题,请参考以下文章

Talend Data Integration 中的选角日期

将 double 转换为 BigDecimal 并设置 BigDecimal 精度

在java中将字符串列表转换为BigDecimal列表

JPA 将 BigDecimal 转换为字符串

将特定于语言环境的字符串转换为 BigDecimal 的最佳方法

Talend 数据转换