Pentaho SDK,如何定义文本文件输入

Pentaho SDK, how to define a text file input

我正在尝试通过代码定义 Pentaho Kettle (ktr) 转换。我想在转换中添加文本文件输入步骤:http://wiki.pentaho.com/display/EAI/Text+File+Input.

我不知道该怎么做(请注意,我想在自定义 Java 应用程序中实现结果,而不是使用标准的 Spoon GUI)。我想我应该使用 TextFileInputMeta class,但是当我尝试定义文件名时,转换不再起作用(在 Spoon 中它似乎是空的)。

这是我正在使用的代码。我认为第三行有问题:

PluginRegistry registry = PluginRegistry.getInstance();
TextFileInputMeta fileInMeta = new TextFileInputMeta();
fileInMeta.setFileName(new String[] {myFileName});
String fileInPluginId = registry.getPluginId(StepPluginType.class, fileInMeta); 
StepMeta fileInStepMeta = new StepMeta(fileInPluginId, myStepName, fileInMeta);
fileInStepMeta.setDraw(true);
fileInStepMeta.setLocation(100, 200);
transAWMMeta.addStep(fileInStepMeta);           

要以编程方式进行 运行 转换,您应该执行以下操作:

  1. 初始化 Kettle
  2. 准备一个TransMeta对象
  3. 准备你的步骤
    • 不要忘记元数据对象!
  4. 将它们添加到 TransMeta
  5. 创建 Trans 并 运行 它
    • 默认情况下,每个转换每一步都会产生一个线程,因此使用 trans.waitUntilFinished() 强制您的线程等待直到执行完成
  6. 必要时选择执行结果

以这个测试为例:https://github.com/pentaho/pentaho-kettle/blob/master/test/org/pentaho/di/trans/steps/textfileinput/TextFileInputTests.java

此外,如果您的情况可以接受,我建议您手动创建转换并从文件加载它。这将有助于避免大量样板代码。在这种情况下 运行 转换非常容易,请参见此处的示例:https://github.com/pentaho/pentaho-kettle/blob/master/test/org/pentaho/di/TestUtilities.java#L346