0

我是pentaho水壶的新手...

现在,我有一个包含许多 .txt 文件的文件夹。

比如说:20121012.txt、20121014.txt……

每次我运行水壶作业时,它都会 grep 所有这些文件以导入数据库。

我需要在导入数据库之前处理检查以防止数据重复。

问题是,我怎样才能让水壶注意到已经导入的文件名?

例如:

20121012.txt <=如果这个文件是导入的,下次会检查文件名,如果是相同的文件名,则不导入。

在这种情况下,我不能只在“检查文件是否存在”步骤中简单地设置特定文件“20121012.txt”。这是因为txt文件很大。如果文件名指的是一天,那么 1 年包含 365-366 天。我不能以这种方式对所有天文件进行硬编码。

因此,可能的方法是在导入数据库之前检查该进程文件的文件名是否存在。

这是我的问题,我该怎么做?我需要使用哪些步骤或工作流程?谁能提供可以做到这一点的详细步骤?

我期待收到您的来信,如果您需要更多信息,请告诉我。

感谢大家的帮助!

4

2 回答 2

2

您可以通过将已处理的文件列表存储在数据库中的表之类的位置来做到这一点。在另一个步骤中加载表,然后通过合并将来自这些步骤的流连接起来,并仅通过文件加载步骤中不在另一个流中的那些文件。

确保稍后使用任何新处理的文件更新您已处理的表。

于 2012-12-08T16:46:57.500 回答
2

您可以使用“获取文件名”步骤。在此步骤中:设置存储文件的文件夹,然后设置通配符(例如“.*”,如果您想要文件夹中的所有文件)。

如果您的数据库存储了已导入的文件名,您可以使用“数据库查找”检查您的文件名是否已在数据库中,然后过滤流,以仅传递在数据库中未找到的文件名,从而使您的转换变得无效。

于 2012-12-10T08:53:47.727 回答