处理Talend中的数据截断

我正在将数据从Excel工作表复制到SQL服务器表。 在一些工作表中,我使用SQL的表格模式大小更大的数据。

即Table的列的数据types为nvarchar(50),因为我的Excel工作表在某些shell中的数据超过了50个字符。

现在在复制时,具有这种数据的行没有被插入到数据库中。 相反,我想通过截断额外的字符插入这些数据的行。 我该怎么做呢?

您可以使用Java的子string方法检查string的长度,如下所示:

 row1.foobar.length() > 50 ? row1.foobar.substring(0,50) : row1.foobar 

这使用Java的String length方法来testing它是否大于50.如果是,则使用substring方法获取0到50之间的字符(所以前50个字符),如果不是,则返回整个string。

如果你在tMap或tJavaRow中popup这个string,那么你应该能够限制string为50个字符(或任何你想要的一些调整):

在tMap中使用s.substring()方法的示例

如果您希望删除不符合数据库架构的行,则应定义作业的架构以匹配数据库架构,然后使用tSchemaComplianceCheck组件过滤掉与该架构不匹配的行。