ExecuteSQL 2025.10.2.19

Pacote

org.apache.nifi | nifi-standard-nar

Descrição

Executes provided SQL select query. Query result will be converted to Avro format. Streaming is used so arbitrarily large result sets are supported. This processor can be scheduled to run on a timer, or cron expression, using the standard scheduling methods, or it can be triggered by an incoming FlowFile. If it is triggered by an incoming FlowFile, then attributes of that FlowFile will be available when evaluating the select query, and the query may use the ? to escape parameters. In this case, the parameters to use must exist as FlowFile attributes with the naming convention sql.args. N.type and sql.args. N.value, where N is a positive integer. The sql.args. N.type is expected to be a number indicating the JDBC Type. The content of the FlowFile is expected to be in UTF-8 format. FlowFile attribute “executesql.row.count” indicates how many rows were selected.

Tags

database, jdbc, query, select, sql

Requisito de entrada

ALLOWED

Oferece suporte a propriedades dinâmicas confidenciais

true

Propriedades

Propriedade

Descrição

Estratégia de saída de conteúdo

Specifies the strategy for writing FlowFile content when processing input FlowFiles. The strategy applies when handling queries that do not produce results.

Serviço de pool de conexões de banco de dados

O Controller Service usado para obter conexão ao banco de dados

Tempo máximo de espera

The maximum amount of time allowed for a running SQL select query , zero means there is no limit. Max time less than 1 second will be equal to zero.

Consulta SQL

A consulta SQL a ser executada. A consulta pode ser vazia, um valor constante ou criada a partir de atributos usando a linguagem de expressão. Se essa propriedade for especificada, ela será usada independentemente do conteúdo dos FlowFiles de entrada. Se essa propriedade estiver vazia, espera-se que o conteúdo do FlowFile de entrada contenha uma consulta SQL select válida, a ser emitida pelo processador para o banco de dados. Observe que a linguagem de expressão não é avaliada para o conteúdo do FlowFile.

compression-format

Tipo de compressão a ser usado ao gravar arquivos Avro. O padrão é nenhum.

dbf-default-precision

Quando um valor DECIMAL/NUMBER é escrito como um tipo lógico Avro “decimal”, é necessária uma “precisão” específica que indique o número de dígitos disponíveis. Em geral, a precisão é definida pela definição do tipo de dados da coluna ou pelo padrão dos mecanismos do banco de dados. Entretanto, a precisão indefinida (0) pode ser retornada por alguns mecanismos de banco de dados. A “precisão decimal padrão” é usada ao escrever esses números de precisão indefinida.

dbf-default-scale

Quando um valor DECIMAL/NUMBER é escrito como um tipo lógico Avro “decimal”, é necessária uma “escala” específica que indique o número de dígitos decimais disponíveis. Em geral, a escala é determinada pela definição do tipo de dados da coluna ou pelo padrão dos mecanismos do banco de dados. No entanto, quando a precisão indefinida (0) é retornada, a escala também pode ser incerta com alguns mecanismos de banco de dados. A “escala decimal padrão” é usada ao escrever esses números indefinidos. Se um valor tiver mais casas decimais do que a escala especificada, o valor será arredondado para cima, por exemplo, 1,53 se torna 2 com escala 0 e 1,5 com escala 1.

dbf-normalize

Se você deve alterar os caracteres não compatíveis com o Avro nos nomes das colunas para caracteres compatíveis com o Avro. Por exemplo, os dois pontos e pontos finais serão alterados para sublinhados para criar um registro Avro válido.

dbf-user-logical-types

Se você deve usar os tipos lógicos Avro para as colunas DECIMAL/NUMBER, DATE, TIME e TIMESTAMP. Se estiver desativado, será escrito como cadeia de caracteres. Se ativado, os tipos lógicos são usados e escritos como seu tipo subjacente, especificamente, DECIMAL/NUMBER como “decimal” lógico: escrito como bytes com precisão adicional e metadados de escala, DATE como “date-millis” lógico: escrito como int denotando dias desde a época do Unix (1970-01-01), TIME como “time-millis” lógico: escrito como int denotando milissegundos desde a época do Unix e TIMESTAMP como “timestamp-millis” lógico: escrito como um long denotando milissegundos desde a época do Unix. Se um leitor dos registros Avro gravados também reconhecer esses tipos lógicos, esses valores poderão ser desserializados com mais contexto, dependendo da implementação do leitor.

esql-auto-commit

Ativa ou desativa a funcionalidade de confirmação automática da conexão DB. O valor padrão é “verdadeiro”. O valor padrão pode ser usado com a maioria dos drivers JDBC e essa funcionalidade não tem nenhum impacto na maioria dos casos, pois esse processador é usado para ler dados. No entanto, para alguns drivers JDBC, como o driver PostgreSQL, é necessário desativar a funcionalidade de confirmação automática para limitar o número de linhas de resultados obtidas por vez. Quando a confirmação automática está ativada, o driver postgreSQL carrega todo o conjunto de resultados na memória de uma só vez. Isso pode levar a uma grande quantidade de uso de memória ao executar consultas que buscam grandes conjuntos de dados. Mais detalhes sobre esse comportamento no driver PostgreSQL podem ser encontrados em https://jdbc.postgresql.org//documentation/head/query.html.

esql-fetch-size

O número de linhas de resultados a serem obtidas do conjunto de resultados por vez. Essa é uma dica para o driver do banco de dados e pode não ser respeitada e/ou exata. Se o valor especificado for zero, a dica será ignorada.

esql-max-rows

O número máximo de linhas de resultados que serão incluídas em um único FlowFile. Isso permitirá que você divida conjuntos de resultados muito grandes em vários FlowFiles. Se o valor especificado for zero, todas as linhas serão retornadas em um único FlowFile.

esql-output-batch-size

O número de saídas FlowFiles a serem enfileiradas antes de encerrar a sessão do processo. Quando definida como zero, a sessão será confirmada quando todas as linhas do conjunto de resultados tiverem sido processadas e a saída FlowFiles estiver pronta para ser transferida para a relação downstream. Para conjuntos de resultados grandes, isso pode causar um grande pico de FlowFiles a ser transferido no final da execução do processador. Se essa propriedade for definida, quando o número especificado de FlowFiles estiver pronto para transferência, a sessão será confirmada, liberando assim os FlowFiles para a relação downstream. NOTE: o atributo fragment.count não será definido nos FlowFiles quando essa propriedade for definida.

sql-post-query

A semicolon-delimited list of queries executed after the main SQL query is executed. Example like setting session properties after main query. It “s possible to include semicolons in the statements themselves by escaping them with a backslash (”;”). Results/outputs from these queries will be suppressed if there are no errors.

sql-pre-query

A semicolon-delimited list of queries executed before the main SQL query is executed. For example, set session properties before main query. It “s possible to include semicolons in the statements themselves by escaping them with a backslash (”;”). Results/outputs from these queries will be suppressed if there are no errors.

Relações

Nome

Descrição

failure

A execução da consulta SQL falhou. O FlowFile de entrada será penalizado e encaminhado para essa relação

success

Criou com sucesso o FlowFile a partir do conjunto de resultados de consulta SQL.

Grava atributos

Nome

Descrição

executesql.row.count

Contém o número de linhas retornadas pela consulta. Se “Máximo de linhas por FlowFile” estiver definido, esse número refletirá o número de linhas no FlowFile em vez de todo o conjunto de resultados.

executesql.query.duration

Duração combinada do tempo de execução da consulta e do tempo de busca em milissegundos. Se a opção “Máximo de linhas por FlowFile” estiver definida, esse número refletirá apenas o tempo de busca das linhas no FlowFile, em vez de todo o conjunto de resultados.

executesql.query.executiontime

Duração do tempo de execução da consulta em milissegundos. Esse número refletirá o tempo de execução da consulta, independentemente da configuração “Máximo de linhas por FlowFile”.

executesql.query.fetchtime

Duração do tempo de busca do conjunto de resultados em milissegundos. Se a opção “Máximo de linhas por FlowFile” estiver definida, esse número refletirá apenas o tempo de busca das linhas no FlowFile, em vez de todo o conjunto de resultados.

executesql.resultset.index

Supondo que vários conjuntos de resultados sejam retornados, o índice baseado em zero desse conjunto de resultados.

executesql.error.message

Se o processamento de um FlowFile de entrada causar uma exceção, o FlowFile será encaminhado para falha e esse atributo será definido como a mensagem de exceção.

fragment.identifier

Se a opção “Máximo de linhas por FlowFile” for definida, todos os FlowFiles do mesmo conjunto de resultados de consulta terão o mesmo valor para o atributo fragment.identifier. Isso pode ser usado para correlacionar os resultados.

fragment.count

Se a opção “Máximo de linhas por FlowFile” for definida, esse será o número total de FlowFiles produzido por um único ResultSet. Isso pode ser usado em conjunto com o atributo fragment.identifier para saber quantos FlowFiles pertencem ao mesmo ResultSet de entrada. Se o tamanho do lote de saída estiver definido, esse atributo não será preenchido.

fragment.index

Se “Máximo de linhas por FlowFile” estiver definido, então esta propriedade indica a posição do FlowFile na lista de FlowFiles de saída em que todos foram derivados do mesmo FlowFile do conjunto de resultados. Isso pode ser usado em conjunto com o atributo fragment.identifier para saber quais FlowFiles se originaram do mesmo conjunto de resultados de consulta e em que ordem os FlowFiles foram produzidos

input.flowfile.uuid

Se o processador tiver uma conexão de entrada, os FlowFiles de saída terão esse atributo definido como o valor do UUID do FlowFile de entrada. Se não houver conexão de entrada, o atributo não será adicionado.