Процессор ExecuteSql добавляет в поток атрибут executetesql.row.count (Contains the number of rows returned in the select query)
.
Вы можете проверить значение attribute(executesql.row.count)
и принять решение, нужно ли нам использовать ConvertRecord процессор или нет.
Поток:
Executesql(success)--> RouteOnAttribute(add new property ${executesql.row.count:equals(0)})
--> matched --> ReplaceText //Add Header
--> unmatched --> ConvertRecord //convert to csv format
, если соответствует , тогда используйте Замените текстовый процессор , чтобы перезаписать существующее содержимое файла потока заголовком.
, если Unmatched , что означает, что у вас имеется несколько строк данных в содержимом потокового файла, поэтому используйте процессор ConvertRecord и подготовьте данные CSV.