0

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

我不知道该怎么做(请注意,我想在自定义 Java 应用程序中实现结果,而不是使用标准 Spoon GUI)。我想我应该使用这个TextFileInputMeta类,但是当我尝试定义文件名时,转换不再起作用(在 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);           
4

1 回答 1

3

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

  1. 初始化水壶
  2. 准备一个TransMeta对象
  3. 准备你的步骤
    • 不要忘记 Meta 和 Data 对象!
  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

于 2015-12-01T12:04:03.673 回答