迭代文件夹 - 处理不适合模式的文件

时间:2014-10-10 16:00:01

标签: error-handling etl talend

我有一个包含多个xlsx文件的目录,我想要做的是将文件中的数据插入数据库。

到目前为止,我已经通过使用tFileList解决了这个问题 - > tFileInputExcel - > tPostgresOutput

当其中一个文件与定义的架构不匹配并返回导致工作流中断的错误时,我的问题就开始了。

我需要弄清楚的是,它是否可以跳过该文件(例如将其移动到另一个文件夹)并继续迭代其余的现有文件。

如果我检查选项" Die on error"该过程结束,并且不处理其余文件。

1 个答案:

答案 0 :(得分:2)

我会通过使tFileInputExcel上的初始输入模式成为所有字符串来实现此目的。

读完文件后,我会使用tSchemaComplianceCheck设置为"使用另一个模式进行合规性检查"来验证模式。

您应该能够将拒绝链接从tSchemaComplianceCheck连接到配置为将文件移动到新目录的tFileCopy(如果您希望它移动它,那么只需勾选"删除源文件")

这是一个简单的例子:

Job layout

tSchemaComplianceCheck configuration

将以下设置为合规性检查的其他架构(请注意它现在如何检查idage是否为整数):

Proper schema in tSchemaComplianceCheck

然后移动文件:

tFileCopy configuration

如果要插入数据库,来自tSchemaComplianceCheck的主流可以继续使用字符串。如果您正在进行任何需要正确数据类型的处理,或者您正在使用tPostgresOutput组件来创建表,则可能需要使用tConvertType将事物更改回正确的数据类型。