1

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

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

4

4 回答 4

1

我注意到上下文变量名称有所不同。在您提到的屏幕截图中(String)context.get("fileDelimiter")。但是在文本中,您说“我已在上下文文件中将其指定为fieldDelimiter="\t" ”。

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

fieldDelimiter=\t

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

于 2017-06-14T12:19:48.210 回答
1

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

于 2017-06-14T19:09:44.657 回答
0

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

因此,如果您的字段被调用,fileDelimiter只需放入context.fileDelimiterField Separator

于 2017-06-14T10:14:26.660 回答
0

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

于 2017-06-14T18:31:02.227 回答