Talend - 在插入mysql数据库之前检查列长度

时间:2017-01-25 15:23:11

标签: mysql triggers talend

我正在尝试将Talend Open Studio用于BI学校项目的数据集成。我有一个包含以下数据的txt文件:

NoClient;Name;Region;State;City;Postcode
24;Edna Thomas;West;California;Laguna Niguel;92677

我使用job来转换数据并将其插入表中。它工作得很好。

现在,我想处理SQL错误。例如,如果DB中指定的列长度为10,并且作业尝试在该列中插入11长度数据,则会出现SQL错误。

我怎样才能实现它? tMysqlOutput中是否有特定功能,或者我应该在插入之前使用这样的触发器来检查数据:

CREATE TRIGGER my_trigger
BEFORE INSERT 
ON my_table
  FOR EACH ROW BEGIN

    IF (SELECT LENGTH(NEW.Noclient)>255) THEN
    // instructions
END IF

希望它足够清楚!提前谢谢,抱歉英语不好: - )

2 个答案:

答案 0 :(得分:1)

也许你可以检查tmap中的每个变量。

例如:

StringHandling.LEN(var) <= 10 ? var : StringHandling.LEFT(var,10)

你可以适应你场地的大小。

答案 1 :(得分:1)

有一个组件:tSchemaComplianceCheck 一个很好的例子可以在: http://dwetl.com/2015/03/30/data-validation-using-tschemacompliancecheck/