在 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 会自动将其作为字符串处理。
希望这有效。
我在 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 会自动将其作为字符串处理。 希望这有效。