Вызовите функцию SQL в Nifi, используя ExecuteSQL или другой процессор - PullRequest
0 голосов
/ 04 декабря 2018

В настоящее время я использую функцию в SQL Server для получения максимального значения определенного столбца.Мне нужно это значение для генерации определенного количества фиктивных файлов для вставки потоковых файлов, которые создаются позже.Есть ли способ вызова этой функции через nifi-процессор?

При использовании ExecuteSQL я всегда получаю сообщение об ошибке, например, невозможно выполнить запрос выбора SQL или не найден столбец «ab», при использовании select ab.functionname() (ab - имя пользователя базы данных)

В SQL Server я могу просто использовать select ab.functionname () и получить желаемые результаты.

Если нет возможности вызвать эту функцию, есть ли другой способ создания #flowfiles dummyfiles, чтобы зарезервировать это место дляих в БД, чтобы никто другой не мог вставить или использовать эти идентификаторы (не autoincremt, потому что это невозможно) во время обработки потоковых файлов?

Я пытался использовать $ flowfile.count и Counterprocessor, ноэто не решило проблему.Он должен выглядеть следующим образом: значения INSERT INTO таблицы (id, nr) (max (id) + 1, anynumber) для каждого файла потока, к сожалению, ExecuteSQL не может этого сделать.

1 Ответ

0 голосов
/ 04 декабря 2018

Думаю, этот разговор может вам помочь: https://community.hortonworks.com/questions/26170/does-executesql-processor-allow-to-execute-stored.html

Суть:

  • Вы можете использовать ExecuteScript или ExecuteProcess для вызова соответствующего скрипта.Например, для ExecuteProcess просто вызовите команду sqlplus.Выберите тип команды "sqlplus".В аргументах команды укажите что-то вроде: user_id / password @ dbname @ "script_path / someScript.sql".В someScript.sql вы помещаете что-то вроде:

execute spname (param)

  • Вы можете написать свой собственный процессор :) Конечно, это большесложность и часто ненужные
...