处理Talend中的数据截断

Qui*_*gan 3 sql-server excel talend

我正在将数据从Excel工作表复制到SQL服务器表.在某些工作表中,我的数据大小超出了SQL的表格模式.

即表的列具有数据类型nvarchar(50),其中我的Excel工作表在某些shell中具有超过50个字符的数据.

现在,在复制时,具有此类数据的行不会插入到数据库中.相反,我想通过截断额外的字符来插入包含此类数据的行.我该怎么做呢?

yda*_*coR 5

您可以使用Java的substring方法检查字符串的长度,例如:

row1.foobar.length() > 50 ? row1.foobar.substring(0,50) : row1.foobar
Run Code Online (Sandbox Code Playgroud)

这使用Java的String长度方法来测试它是否长于50.如果是,那么它使用substring方法获取0到50之间的字符(所以前50个字符),如果不是则返回整个字符串.

如果你在tMap或tJavaRow中弹出它,那么你应该能够将字符串限制为50个字符(或任何你想要的调整):

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

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