ETL 文件加载:今天创建的文件,还是尚未加载的文件?

ETL file loading: files created today, or files not already loaded?

我需要自动执行将新数据文件加载到数据库中的过程。我的问题是关于以自动方式确定哪些文件是 "new" 的最佳方法。

文件是从每晚同步的目录中检索的,因此文件列表不断增加。我没有清除已检索文件的选项。

新记录存储在原始数据 table 中,其中有一个字段指示每条记录的来源文件名,因此我可以将目录中当前的所有文件名与原始数据中已有的文件名进行比较 table,并只处理那些不常见的文件名。

或者我可以使用文件名中的时间戳,并且仅处理自上次导入过程 运行.

以来创建的文件

我倾向于使用第一种方法,因为它似乎不太容易出错,但我并没有很幸运地发现这是否真的如此。通过将所有文件名与数据库中已有的文件名进行比较,以这种方式确定新文件的陷阱是什么?

文件名比较:

  • 如果您有数百万个文件,那么比较可能不是您想要的 正在寻找。
  • 您必须确保上述文件夹中的文件永远不会被获取 已删除。

按日期获取文件名:

  • 由于这些文件名每天检索一次可以保证 准确性。 (即使他们以毫秒差异创建)
  • 如果有很多文件,效率会更高。
  • Pentaho 给出的是修改日期而不是创建日期。

要执行上述任一操作,您可以使用以下 Pentaho 步骤。

配置获取文件名步骤:

  • File/Directory: 给出包含文件的文件夹路径。

  • 通配符 (RegExp):.*\.* 获取全部或 .*\.pdf 获取特定
    格式.