如何使用Pentaho Spoon重命名没有扩展名

时间:2016-12-02 21:20:12

标签: pentaho-spoon pentaho-data-integration

我是Pentaho Spoon的新手。我在一个文件夹中有大约100个文本文件,其中没有文件扩展名。我发现,如果我创建一个作业并一次移动一个文件,我可以简单地重命名该文件,在末尾添加.txt扩展名。我想做的是创建一个通过并重命名每个文件并添加.txt扩展名的作业。我已经尝试使用正则表达式,但似乎无法让它工作,因为没有文件扩展名。 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

这是一个非常简单的解决方案,但你需要使用转换,因为作业步骤不会这样做,好吗?

您需要执行以下步骤:

enter image description here

获取文件名:只需添加您的文件夹和RegExp“。*”(不带双引号),以便列出所有内容。使用“显示文件名...”按钮检查它是否正常。

修改的Java脚本值:声明一个new_filename var连接所需的扩展名。请记住在添加脚本后单击“获取变量”以输出新字段。

var new_filename = filename + '.txt';

处理文件:选择Operation = Move和filename / new_filename作为源/目标文件名。

就是这样!

答案 1 :(得分:0)

重命名一组文件是我不会使用Kettle的一件事。为什么不让shell做最好的shell呢?

rem example for Windows CMD shell
ren absolute-path-to-folder\*. *.txt

如果您有理由在Kettle中完成此操作,可以使用Shell作业条目完成此操作。

答案 2 :(得分:0)

我已经看过"只是使用shell脚本"之前的答案。如果您可以保证Kettle服务器与开发人员工作站位于同一操作系统上,则效果很好。我在Dev / Spoon实例是Windows的环境中,但Prod / Kettle环境是Linux,所以你不能编写一个脚本文件来统治它们。

至于"为什么你会这样做?",我的场景是一个集成场景。我们正在使用Pentaho进行数据集成,但却是企业集成的另一种工具。我想要一个Pentaho Job来生成一个输出文件,我希望我的企业集成工具能够获取文件并使用它做一些事情,但是在Pentaho完成编写文件之前就没有了。当企业集成解决方案识别出文件存在时,重命名有助于避免竞争条件,但Pentaho尚未完成编写。

如果我可以重命名一组文件,例如从test。 .csv.processing更改为test。 .csv,那么Pentaho最初将使用.processing扩展名创建文件,然后完成后删除扩展程序。正在寻找测试的企业集成解决方案。*。csv不会开始处理该文件,直到Pentaho重命名它。宾果,没有竞争条件。