1

使用 Pentaho 的 Kettle 工具,我有一个转换设置,它从一个 Get File Names 步骤开始,以从一个目录中获取所有 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 教程向您展示了如何检查文件是否存在,而不是整个文件夹。

4

1 回答 1

2

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

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

于 2012-12-01T13:15:01.740 回答