目录
收到的需求是这样的:有几百个文本文件,每个文件内容的格式相同,都是有固定分隔符的两列,每个文件有几千行记录。现在需要把这些文件的内容导入一个表,除了文件中的两列,还要存一列记录对应的文件名。
作为一名 DBA,向表中导入数据本来是小事一桩,可这有几百个文件要手工逐个处理未免太麻烦了,于是想起了 Kettle。Kettle 的转换处理数据流,其中有一个“获取文件名”的输入对象,可以使用它在导入文件数据时添加上文件名字段,而且支持正则表达式同时获取多个文件名,正好适用此场景。下面为实现步骤。
1. 新建一个转换
包含“获取文件名”、“文本文件输入”、“表输出”三个步骤,如下图所示。
2. “获取文件名”步骤
如下图所示:
注意:正则表达式的 * 前面要加一个“.”,否则报错。
3. “文本文件输入”步骤
如下面两图所示:
注意:通过这种设置后文本文件输入中字段选项无法自动获取字段。不过可以先不设置从前一步骤获取文件名,利用这个步骤的自身属性先获取字段,然后再设置。
4. “表输出”步骤
如下面两图所示:
5. 更简单的方法
还有更简单的获取文件名的方法,不需要使用“获取文件名”步骤,主要在输入文件步骤的“其他输出字段”标签页上给出文件名字段的名称即可。例如下面的 Excel 输入所示。