Использование вкладки в качестве разделителя в компоненте tFileInputDelimited в Talend Open Studio
Я написал ETL в Talend Open Studio, который загружает файл CSV/TSV в базу данных. Для этого я хочу предоставить разделитель в компоненте tFileInputDelimited, используя динамическую загрузку контекста из текстового файла. Я указал его в файле контекста как fieldDelimiter = "\t" и в компоненте tFileInputDelimited, как показано на скриншоте. Но это не работает как разделитель. Я также пытался использовать fieldDelimiter="\\t" или fieldDelimiter = "\ u0009" (символ Юникода для табуляции).
Что я должен предоставить в файле контекста, чтобы разделитель был символом табуляции, а не строкой "\t", как это происходит в данном случае?
4 ответа
Нет функции (String)context.get("key")
что я знаю Если вы установили разделитель как элемент String в контексте, просто получите к нему прямой доступ. Теперь в качестве разделителя полей будет использоваться пустая строка.
Так что если ваше поле называется fileDelimiter
Проще говоря context.fileDelimiter
в разделитель полей.
В вашем контекстном файле просто поместите fileDelimiter = \t (без кавычек), а затем получите доступ к переменной в разделителе поля. Talend автоматически обработает это как строку. Надеюсь, это работает.
Я замечаю разницу в именах переменных контекста. На скриншоте вы упомянули (String)context.get("fileDelimiter")
, Но в тексте вы говорите "Я указал это в файле контекста как fieldDelimiter="\t"
".
просто содержание в файле.properties должно работать следующим образом
fieldDelimiter=\t
Также используйте context.fieldDelimiter
вместо (String)context.get("fileDelimiter").
Как отмечают другие, вы должны использовать синтаксис context.ParamName, преимуществом этого метода является проверка синтаксиса во время компиляции, которая устраняет риск опечаток в именах переменных. Этот параметр должен быть объявлен в вашей работе (вкладка контекстов), чтобы Talend распознал его. Вы можете создать его как встроенный или импортировать, если он находится в хранилище.