如何从 Pentaho Kettle 读取所有文件夹和子文件夹 使用 SFTP 步骤获取文件

Posted

技术标签:

【中文标题】如何从 Pentaho Kettle 读取所有文件夹和子文件夹 使用 SFTP 步骤获取文件【英文标题】:How to read all folders and subfolders from Pentaho Kettle Get files with SFTP step 【发布时间】:2014-11-11 11:58:12 【问题描述】:

“使用 SFTP 获取文件”步骤能够从指定的源路径(通过 FTP)获取所有文件。但它无法读取源路径中存在的任何文件夹。我尝试使用 Reg-Exp 通配符,如 .* 或 * 或 .等等,但没有用。

在我的用例中,源文件始终位于一个或多个文件夹中(例如特定月份文件夹中的每月交易文件,或多级文件夹层次结构中的按年和按月文件夹等)。如果所有这些文件夹都移动到我的本地机器上,那么我可以使用“获取文件名”步骤从每个文件夹和子文件夹中读取文件。

谁能指导我如何从“使用 SFTP 获取文件”步骤中从源路径复制/移动所有文件和文件夹?

【问题讨论】:

【参考方案1】:

试试 VFS。我不确定它是否有效,但 PDI 中一个鲜为人知的惊人技巧是,在任何引用文件的地方,您都可以使用 VFS URL,并且 VFS 支持 SFTP 以及许多其他功能。

http://infocenter.pentaho.com/help/index.jsp?topic=%2Fpdi_user_guide%2Fconcept_vfs_sftp_config.html

【讨论】:

【参考方案2】:

我相信您将需要遍历各种子文件夹并继续迭代,直到您用完文件夹。 sftp 没有“递归”选项,afaik。

【讨论】:

【参考方案3】:

我认为您不会为此找到一个步骤,但我们可以解决这个问题。 我会建议与我们在工作中处理类似问题的方法相同。

我们使用Shell Step 在 linux 中运行 shell 脚本,该脚本会列出一个文件夹(带有子文件夹)并创建一个包含我想在下一步读取的所有文件路径的文件(每行一个路径/文件名)。

工作的下一步是读取在该 shell 上生成的文件的转换(我们总是在同一个地方生成),在转换完成后,我有一个 delete file 步骤来杀死文件,这样我们就可以生成另一个下一次。

希望对您有所帮助。如果您需要更多详细信息,请告诉我。

【讨论】:

以上是关于如何从 Pentaho Kettle 读取所有文件夹和子文件夹 使用 SFTP 步骤获取文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 StAX / Kettle (Pentaho) 读取 XML 文件

Pentaho Kettle 从字符串转换为整数/数字错误

如何从 Pentaho-Kettle 中基于动态选择的 sql 查询中获取结果集?

如何从 Pentaho 的 javascript 步骤中的另一行读取?

如何使用 Kettle Pentaho 删除远程文件

Pentaho Kettle:如何动态获取 JSON 文件列