【问题标题】:How to avoid failure if a folder doesn't exist in Kettle ETL?如果 Kettle ETL 中不存在文件夹,如何避免失败?
【发布时间】:2012-11-30 18:38:29
【问题描述】:

使用 Pentaho 的 Kettle 工具,我设置了一个转换设置,该转换设置从获取文件名步骤开始,以从目录中获取所有 XML 文件。步骤配置如下:

File/Directory: "c:\DataFolder"
Wildcard (RegExp): ".*xml"

这很好用,并为我提供了文件夹“DataFolder”中的所有 XML 文件。

但是,如果 DataFolder 不存在(因为其他人删除了它),我会收到此错误:

2012/11/30 12:15:27 - FileInputList - ERROR (version 4.3.0-stable, build 16786 from 2012-04-24 14.11.32 by buildguy) : org.apache.commons.vfs.FileNotFolderException: Could not list the contents of "file:///c:/DataFolder" because it is not a folder.
2012/11/30 12:15:27 - FileInputList - ERROR (version 4.3.0-stable, build 16786 from 2012-04-24 14.11.32 by buildguy) :  at org.apache.commons.vfs.provider.AbstractFileObject.getChildren(Unknown Source)
2012/11/30 12:15:27 - FileInputList - ERROR (version 4.3.0-stable, build 16786 from 2012-04-24 14.11.32 by buildguy) :  at org.pentaho.di.core.fileinput.FileInputList.createFileList(FileInputList.java:268)
2012/11/30 12:15:27 - FileInputList - ERROR (version 4.3.0-stable, build 16786 from 2012-04-24 14.11.32 by buildguy) :  at org.pentaho.di.trans.steps.getfilenames.GetFileNamesMeta.getFileList(GetFileNamesMeta.java:690)
2012/11/30 12:15:27 - FileInputList - ERROR (version 4.3.0-stable, build 16786 from 2012-04-24 14.11.32 by buildguy) :  at org.pentaho.di.trans.steps.getfilenames.GetFileNames.init(GetFileNames.java:336)
2012/11/30 12:15:27 - FileInputList - ERROR (version 4.3.0-stable, build 16786 from 2012-04-24 14.11.32 by buildguy) :  at org.pentaho.di.trans.step.StepInitThread.run(StepInitThread.java:62)
2012/11/30 12:15:27 - FileInputList - ERROR (version 4.3.0-stable, build 16786 from 2012-04-24 14.11.32 by buildguy) :  at java.lang.Thread.run(Unknown Source)

或简而言之:FileNotFolderException:无法列出“file:///c:/DataFolder”的内容,因为它不是文件夹。

如果文件夹不存在,我想简单地停止转换而不继续。

我尝试使用 File Exists 步骤与 Filter Rows 步骤相结合来提供条件,但没有运气。 Hello World tutorial 向您展示了如何检查文件是否存在,而不是整个文件夹。

【问题讨论】:

    标签: etl pentaho kettle


    【解决方案1】:

    创建一个父作业,添加此 http://wiki.pentaho.com/display/EAI/Check+if+a+folder+is+empty,然后如果 FALSE 将您的流程重新分配到您的转换中

    或者您可以尝试创建文件夹步骤作业:http://wiki.pentaho.com/display/EAI/Create+a+folder

    【讨论】:

    • 使用最新版本的 Spoon (4.3.0) 我没有看到您的链接描述的检查文件夹是否为空作业。此链接infocenter.pentaho.com/help/… 将其置于我的 Spoon 版本中找不到的“条件”下。
    • 我也在 4.3,这就是为什么你需要做一份新工作,而不是转型,因为它是一个工作步骤,而不是一个转型步骤。
    • 是的,您是正确的,感谢您的澄清。我创建了一个父作业(如您所说),检查文件夹是否为空就可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 2016-07-29
    • 2020-01-09
    • 2018-09-05
    相关资源
    最近更新 更多