2016-12-02 138 views
0

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

回答

1

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

你需要进行如下操作:

enter image description here

获取文件名:“*”只需添加您的文件夹和正则表达式(不包括双引号),所以一切都是上市。检查是否可以使用“显示文件名(s)...”按钮。

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

var new_filename = filename + '.txt'; 

流程文件:选择操作=移动和文件名/ new_filename作为源/目标的文件名。

就是这样!

+1

不知道我在几个月前错过了什么,但只是检查它,它的工作原理!谢谢! – FunkyLikeLeeDorsey

0

重命名一组文件是我不会使用Kettle的一件事。为什么不让shell执行shell最擅长的功能?

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

这可以通过使用Shell作业条目来完成,如果您在水壶中找到理由。

0

我见过“只使用shell脚本”的答案。如果您可以保证您的Kettle服务器与开发人员工作站位于相同的操作系统上,则工作良好。我处于Dev/Spoon实例为Windows的环境中,但Prod/Kettle环境为Linux,因此您无法编写一个脚本文件来统一所有这些文件。

至于“你为什么要这样做?”,我的场景是一个集成场景。我们正在使用Pentaho进行数据集成,但它是企业集成的另一种工具。我想要一个Pentaho Job来生成一个输出文件,并且我希望我的Enterprise Integration工具能够拿起文件并对它做些什么,但是在Pentaho完成写入文件之前不会。当Enterprise Integration解决方案识别文件存在时,重命名有助于避免竞争状况,但Pentaho尚未完成编写。

如果我可以重命名一组文件,例如从测试更改。 .csv.processing进行测试。 .csv,那么Pentaho会先用.processing扩展名创建文件,然后在完成后删除扩展名。正在寻找test。*。csv的企业集成解决方案在Pentaho重新命名之前不会开始处理文件。宾果,没有比赛条件。