目的:使用tFileList组件,读取文件夹下的所有文件,输出每个文件内的数据
组件:tFileList,tFileInputDelimited,tLogRow
1.tFileList连接时使用迭代连接
2.设置读取文件路径,文件列表类型选择“文件”
3.设置tFileInputDelimited
3.1读取的文件名,使用全局变量的方法:((String)globalMap.get("tFileList_1_CURRENT_FILEPATH")),其中tFileList_1是组件名,CURRENT_FILEPATH是迭代时的当前文件名,属于全局变量(全局变量查询官方文档)
3.2 分隔符设定:取入csv文件,在tlogrow输出中,可以看到,是以","为分隔符的,所以,建议设置","
3.3 schema设置,取入文件的字段名需要在这里设置,否则,会提示“schema未定义”,导致tlogrow无法输出内容
4.取入文件及文件格式
之所以修改了字段名,是输出前的猜想,我认为他会自动匹配不同的字段进行读取,运行结果证明是错的
5.run
结果很明显,age列是空的,而原本在age列的数据,依然出现在了id列
所以,tFileInputDelimited在读取文件时,不识别所读取的文件内的文件名,他要求读取文件内容格式统一:例如字段位置和字段数量,而在schema中的字段设置,则是人为的将数据和字段名进行一一匹配