在 Talend Open Studio 的 tFileInputDelimited 组件中使用制表符作为分隔符

Using tab as delimiter in tFileInputDelimited component in Talend Open Studio

我在 Talend Open Studio 中编写了一个 ETL,它在数据库中加载了一个 CSV/TSV 文件。为此,我想使用文本文件中的动态上下文加载在 tFileInputDelimited 组件中提供分隔符。我已在上下文文件中将其指定为 fieldDelimiter="\t" 并在 tFileInputDelimited 组件中将其指定为 screenshot 中所示。但是,它不能用作分隔符。我也尝试过使用 fieldDelimiter="\\t"fieldDelimiter="\u0009" (制表符的 unicode 字符)。

我应该在上下文文件中提供什么,以便分隔符是一个制表符而不是在这种情况下发生的“\t”字符串?

没有我知道的功能 (String)context.get("key")。如果您已将分隔符设置为 Context 中的 String 元素,则直接访问它即可。现在将有一个空字符串设置为我想的字段分隔符。

因此,如果您的字段名为 fileDelimiter,只需将 context.fileDelimiter 放入 字段分隔符

我注意到上下文变量名称有所不同。在您提到的屏幕截图中 (String)context.get("fileDelimiter")。但是在文本中你说 "I have specified it in the context file as fieldDelimiter="\t" ".

只需在 .properties 文件中保持上下文如下即可

fieldDelimiter=\t

也使用 context.fieldDelimiter 代替 (String)context.get("fileDelimiter").

正如其他人所指出的,您应该使用 context.ParamName 语法,此方法的好处是在编译时进行语法检查,从而消除了变量名拼写错误的风险。 必须在您的作业(上下文选项卡)中声明此参数,以便 Talend 识别它。如果它在存储库中,您可以将其创建为内置或导入它。

在您的上下文文件中,只需将 fileDelimiter = \t (没有引号) 然后访问字段分隔符中的变量。 Talend 会自动将其作为字符串处理。 希望这有效。