Pentaho数据集成、csv输入、添加文件名列

Pentaho数据集成、csv输入、添加文件名列,pentaho,Pentaho,使用Pentaho数据集成,我有csv文件输入。我想从csv中读取所有列,添加一个带有文件名的列(如果我有一个abcd.csv,我想要abcd)并将其插入到数据库表中 有什么建议吗,我如何才能在每行中添加文件名列?我知道这听起来有点倒退,但您可能希望使用文本文件输入步骤来解析您的CSV文件,而不是CSV输入,后者是文本文件输入选项的子集,对于分隔文件具有一些性能优势 使用文本文件输入可以使用更多选项来读取文件。您可以将文件类型设置为CSV,并在“内容”选项卡中选择分隔符,然后在“字段”选项卡中列

使用Pentaho数据集成,我有csv文件输入。我想从csv中读取所有列,添加一个带有文件名的列(如果我有一个abcd.csv,我想要abcd)并将其插入到数据库表中


有什么建议吗,我如何才能在每行中添加文件名列?

我知道这听起来有点倒退,但您可能希望使用文本文件输入步骤来解析您的CSV文件,而不是CSV输入,后者是文本文件输入选项的子集,对于分隔文件具有一些性能优势

使用文本文件输入可以使用更多选项来读取文件。您可以将文件类型设置为CSV,并在“内容”选项卡中选择分隔符,然后在“字段”选项卡中列出要获取的字段。使用此步骤可以解决您的问题,因为在“附加输出字段”选项卡中,您可以在流中指定一个字段以放置文件名、扩展名、文件路径等

使用CSV输入时获得的优势包括:

  • NIO:读取文件的本机系统调用意味着更快的性能,但目前仅限于本地文件。没有VFS支持
  • 并行运行:如果将此步骤配置为在多个副本或群集模式下运行,并且启用并行运行,则每个副本将读取单个文件的一个单独块,从而允许您将文件读取分发到群集转换中的多个线程甚至多个从属节点
  • 延迟转换:如果您将从文件中读取许多字段,并且其中许多字段不会被操作,而只是通过转换进入其他文本文件或数据库,那么延迟转换可以防止Kettle对这些字段执行不必要的工作,例如将其转换为字符串等对象,日期或数字
如果您需要这些优势,那么您必须以另一种方式获取文件名,例如将其作为命名参数传递,并使用get Variables步骤将其添加到流中

参考资料:


我知道这听起来有点倒退,但您可能希望使用文本文件输入步骤来解析您的CSV文件,而不是CSV输入,后者是文本文件输入选项的子集,对于分隔文件具有一些性能优势

使用文本文件输入可以使用更多选项来读取文件。您可以将文件类型设置为CSV,并在“内容”选项卡中选择分隔符,然后在“字段”选项卡中列出要获取的字段。使用此步骤可以解决您的问题,因为在“附加输出字段”选项卡中,您可以在流中指定一个字段以放置文件名、扩展名、文件路径等

使用CSV输入时获得的优势包括:

  • NIO:读取文件的本机系统调用意味着更快的性能,但目前仅限于本地文件。没有VFS支持
  • 并行运行:如果将此步骤配置为在多个副本或群集模式下运行,并且启用并行运行,则每个副本将读取单个文件的一个单独块,从而允许您将文件读取分发到群集转换中的多个线程甚至多个从属节点
  • 延迟转换:如果您将从文件中读取许多字段,并且其中许多字段不会被操作,而只是通过转换进入其他文本文件或数据库,那么延迟转换可以防止Kettle对这些字段执行不必要的工作,例如将其转换为字符串等对象,日期或数字
如果您需要这些优势,那么您必须以另一种方式获取文件名,例如将其作为命名参数传递,并使用get Variables步骤将其添加到流中

参考资料:


您从哪里获取文件名?它是硬编码的吗?看起来csv输入步骤不允许您将文件名添加到字段列表中,这很奇怪,因为其他步骤也允许,但根据文件名的来源,这仍然很容易。文件名从何处获得?它是硬编码的吗?看起来csv输入步骤不允许您将文件名添加到字段列表中,这很奇怪,因为其他步骤也可以,但根据文件名的来源,这仍然很容易做到。