我在Talend Open Studio中编写了一个ETL,用于在数据库中加载CSV / TSV文件。为此,我想使用文本文件中的动态上下文加载在tFileInputDelimited组件中提供分隔符。我已在上下文文件中将其指定为 fieldDelimiter =" \ t" ,并在screenshot中显示的tFileInputDelimited组件中。但是,它不能作为分隔符。我还尝试使用 fieldDelimiter =" \\ t" 或 fieldDelimiter =" \ u0009" (标签的unicode字符)。
我应该在上下文文件中提供什么,以便分隔符是制表符而不是" \ t"在这种情况下发生的字符串?
答案 0 :(得分:1)
我注意到上下文变量名称有所不同。在屏幕截图中,您提到了(String)context.get("fileDelimiter")
。但是在你说的文字中,我已经在上下文文件中将其指定为fieldDelimiter="\t"
"。
只需在.properties文件中保持如下上下文
即可fieldDelimiter=\t
还使用context.fieldDelimiter
代替(String)context.get(" fileDelimiter")。
答案 1 :(得分:1)
在上下文文件中,只需输入fileDelimiter = \ t (没有引号) 然后在字段分隔符中访问变量。 Talend会自动将其作为字符串处理。 希望这有效。
答案 2 :(得分:0)
我知道没有函数(String)context.get("key")
。如果已在上下文中将分隔符设置为String元素,则只需直接访问它。现在我将假设一个空字符串设置为字段分隔符。
因此,如果您的字段被调用fileDelimiter
,只需将context.fileDelimiter
放入字段分隔符。
答案 3 :(得分:0)
正如其他人所指出的那样,你应该使用context.ParamName语法,这个方法的好处是在编译时进行语法检查,这样可以消除变量名中拼写错误的风险。 必须在作业(上下文选项卡)中声明此参数,以便Talend识别它。您可以将其创建为内置函数,也可以将其导入存储库中。