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

时间:2014-02-15 21:26:32

标签: pentaho

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

任何建议,如何为每一行添加文件名列?

1 个答案:

答案 0 :(得分:5)

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

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

使用 CSV输入时获得的好处是:

  • NIO:读取文件的本机系统调用意味着更快的性能,但它仅限于当前的本地文件。没有VFS支持。
  • 并行运行:如果将此步骤配置为以多个副本或群集模式运行,并启用并行运行,则每个副本将读取单个文件的单独块,从而允许您将文件读取分发到多个线程甚至集群转换中的几个从节点。
  • 延迟转换:如果您将从文件中读取许多字段,并且许多字段将不会被操作,而只是通过转换传递到其他文本文件或数据库中,则延迟转换可能会阻止Kettle执行对这些字段进行不必要的工作,例如将它们转换为字符串,日期或数字等对象。

如果您需要这些优势,那么您必须以另一种方式获取文件名,例如将其作为命名参数传递,并使用“获取变量”步骤将其添加到流中。

参考资料: