ExecuteSQLRecord
Описание
Выполняет заданный SQL запрос select. Результат запроса будет преобразован в формат, указанный в Record Writer. Используется потоковая передача, поэтому поддерживаются произвольно большие наборы данных. Этот процессор можно настроить для выполнения по таймеру или cron-выражению с использованием стандартных методов планирования или его можно активировать входящим FlowFile. Если он активируется входящим FlowFile, атрибуты этого FlowFile будут доступны при оценке запроса select, и запрос может использовать символ '?' для экранирования параметров. В этом случае параметры должны существовать как атрибуты FlowFile с соглашением об именовании sql.args.N.type и sql.args.N.value, где N — положительное целое число.
Теги
sql, select, jdbc, query, database, record
Свойства
Название | Описание |
---|---|
Database Connection Pooling Service | Служба контроллера, которая используется для получения подключения к базе данных |
SQL Pre-Query | Список запросов, разделённых точкой с запятой, которые выполняются перед основным SQL-запросом. Например, перед основным запросом можно задать свойства сеанса. Точку с запятой можно включить в сами операторы, экранировав её обратной косой чертой (';'). Результаты/выходы этих запросов будут скрыты, если не будет ошибок. Поддерживает язык выражений: true (будет оцениваться с использованием атрибутов файла потока и переменных среды) |
SQL select query | Запрос SQL select для выполнения. Запрос может быть пустым, содержать постоянное значение или быть составлен из атрибутов с использованием языка выражений. Если это свойство указано, оно будет использоваться независимо от содержимого входящих потоковых файлов. Если это свойство не задано, ожидается, что содержимое входящего потокового файла будет содержать допустимый запрос SQL select, который будет отправлен обработчиком в базу данных. Обратите внимание, что язык выражений не вычисляется для содержимого файла flow. Поддерживает язык выражений: true (будет оцениваться с использованием атрибутов файла потока и переменных среды) |
SQL Post-Query | Список запросов, разделённых точкой с запятой, которые выполняются после основного SQL-запроса. Например, установка свойств сеанса после основного запроса. Можно включить точки с запятой в сами операторы, экранировав их обратной косой чертой (';'). Результаты/выходы этих запросов будут скрыты, если не будет ошибок. Поддерживает язык выражений: true (будет оцениваться с использованием атрибутов файла потока и переменных среды) |
Max Wait Time | Максимальное время, допустимое для выполнения SQL-запроса на выборку, ноль означает отсутствие ограничений. Максимальное время, меньшее 1 секунды, будет равно нулю. Поддерживает язык выражений: true (будет оцениваться с использованием атрибутов файла потока и переменных среды) |
Record Writer | Указывает службу контроллера, которую нужно использовать для записи результатов в FlowFile. Средство записи может использовать функцию «Наследовать схему» для имитации поведения предполагаемой схемы, то есть явная схема не должна быть определена в средстве записи и будет предоставляться с помощью той же логики, которая используется для определения схемы на основе типов столбцов. |
Normalize Table/Column Names | Следует ли изменять символы в именах столбцов. Например, двоеточия и точки будут заменены на подчеркивания. |
Use Avro Logical Types | Следует ли использовать логические типы Avro для столбцов DECIMAL/NUMBER, DATE, TIME и TIMESTAMP. Если этот параметр отключен, он записывается как строка. Если эта функция включена, логические типы используются и записываются как базовый тип, в частности, DECIMAL/NUMBER как логический тип «десятичный»: записывается как байты с дополнительными метаданными о точности и масштабе, DATE как логический тип «дата-миллис»: записывается как целое число, обозначающее количество дней с начала эпохи Unix (1970-01-01), TIME как логический тип «время-миллис»: записывается как целое число, обозначающее количество миллисекунд с начала эпохи Unix, и TIMESTAMP как логический тип «метка времени-миллис»: записывается как целое число, обозначающее количество миллисекунд с начала эпохи Unix. Если считыватель записанных записей Avro также знает эти логические типы, то эти значения могут быть десериализованы с большим контекстом в зависимости от реализации считывателя. |
Default Decimal Precision | Когда значение DECIMAL/NUMBER записывается как логический тип Avro «decimal», требуется определённая «точность», обозначающая количество доступных цифр. Как правило, точность определяется типом данных столбца или настройками базы данных по умолчанию. Однако некоторые базы данных могут возвращать неопределённую точность (0). «Десятичная точность по умолчанию» используется при записи чисел с неопределённой точностью. Поддерживает язык выражений: true (будет оцениваться с использованием атрибутов файла потока и переменных среды) |
Default Decimal Scale | Когда значение DECIMAL/NUMBER записывается как логический тип Avro «десятичный», требуется определённая «шкала», обозначающая количество доступных десятичных цифр. Как правило, шкала определяется типом данных столбца или настройками базы данных по умолчанию. Однако при возврате неопределённой точности (0) шкала также может быть неопределённой в некоторых базах данных. «Десятичная шкала по умолчанию» используется при записи таких неопределённых чисел. Если значение содержит больше десятичных знаков, чем указано в масштабе, то значение будет округлено в большую сторону, например, 1,53 станет 2 при масштабе 0 и 1,5 при масштабе 1. Поддерживает язык выражений: true (будет оцениваться с использованием атрибутов файла потока и переменных среды) |
Max Rows Per Flow File | Максимальное количество строк результатов, которые будут включены в один файл Flow. Это позволит разделить очень большие наборы результатов на несколько файлов Flow. Если указанное значение равно нулю, то все строки будут возвращены в одном файле Flow. Поддерживает язык выражений: true (будет оцениваться с использованием атрибутов файла потока и переменных среды) |
Output Batch Size | Количество выходных файлов Flow, которые будут поставлены в очередь перед завершением сеанса обработки. Если значение равно нулю, сеанс будет завершен, когда будут обработаны все строки результирующего набора и выходные потоковые файлы будут готовы для передачи в нижестоящую связь. Для больших результирующих наборов это может привести к передаче большого количества потоковых файлов в конце выполнения процессора. Если это свойство задано, то, когда указанное количество потоковых файлов будет готово к передаче, сеанс будет зафиксирован, что приведет к передаче потоковых файлов в нижестоящую связь. ПРИМЕЧАНИЕ: Атрибут fragment.count не будет установлен для потоковых файлов, если установлено это свойство. Поддерживает язык выражений: true (будет оцениваться с использованием атрибутов файла потока и переменных среды) |
Fetch Size | Количество строк результата, которые будут извлекаться из набора результатов за один раз. Это подсказка для драйвера базы данных, которая может не учитываться и/или не быть точной. Если указанное значение равно нулю, то подсказка игнорируется. Поддерживает язык выражений: true (будет оцениваться с использованием атрибутов файла потока и переменных среды) |
Set Auto Commit | Включает или отключает функцию автоматической фиксации соединения с базой данных. Значение по умолчанию — 'true'. Значение по умолчанию можно использовать с большинством драйверов JDBC, и в большинстве случаев эта функция не оказывает никакого влияния, поскольку этот процессор используется для чтения данных. Однако для некоторых драйверов JDBC, таких как драйвер PostgreSQL, необходимо отключить функцию автоматической фиксации, чтобы ограничить количество строк результатов, извлекаемых за раз. При включенной автоматической фиксации драйвер PostgreSQL загружает весь набор результатов в память за один раз. Это может привести к большому расходу памяти при выполнении запросов, извлекающих большие наборы данных. Более подробную информацию об этом поведении драйвера PostgreSQL можно найти по адресу https://jdbc.postgresql.org//documentation/head/query.html. |
Взаимосвязи
- success: Успешно создан FlowFile на основе набора результатов SQL-запроса.
- failure: Выполнение SQL-запроса не удалось. Входящий FlowFile будет оштрафован и перенаправлен в это отношение