PutDatabaseRecord 2025.10.2.19¶
Pacote¶
org.apache.nifi | nifi-standard-nar
Descrição¶
The PutDatabaseRecord processor uses a specified RecordReader to input (possibly multiple) records from an incoming flow file. These records are translated to SQL statements and executed as a single transaction. If any errors occur, the flow file is routed to failure or retry, and if the records are transmitted successfully, the incoming flow file is routed to success. The type of statement executed by the processor is specified via the Statement Type property, which accepts some hard-coded values such as INSERT, UPDATE, and DELETE, as well as “Use statement.type Attribute”, which causes the processor to get the statement type from a flow file attribute. IMPORTANT: If the Statement Type is UPDATE, then the incoming records must not alter the value(s) of the primary keys (or user-specified Update Keys). If such records are encountered, the UPDATE statement issued to the database may do nothing (if no existing records with the new primary key values are found), or could inadvertently corrupt the existing data (by changing records for which the new values of the primary keys exist).
Requisito de entrada¶
REQUIRED
Oferece suporte a propriedades dinâmicas confidenciais¶
falso
Propriedades¶
Propriedade |
Descrição |
|---|---|
Padrão de tradução de nome de coluna |
O nome da coluna será normalizado com esta expressão regular |
Estratégia de tradução de nome de coluna |
A estratégia usada para normalizar o nome da coluna de tabela. O nome da coluna será em letras maiúsculas para fazer a correspondência sem distinção entre maiúsculas e minúsculas, independentemente da estratégia |
Caminho do registro de dados |
Se especificado, essa propriedade denota um RecordPath que será avaliado em relação a cada registro de entrada e o registro resultante da avaliação de RecordPath será enviado ao banco de dados em vez de enviar todo o registro de entrada. Se não for especificado, todo o registro de entrada será publicado no banco de dados. |
Serviço de dialeto de banco de dados |
Serviço de dialeto de banco de dados para gerar instruções específicas para um determinado serviço ou fornecedor. |
Excluir teclas |
Uma lista de nomes de coluna separados por vírgulas que identifica exclusivamente uma linha no banco de dados para as instruções DELETE. Se Tipo de instrução for DELETE e essa propriedade não for definida, serão usadas as colunas da tabela. Essa propriedade é ignorada se o tipo de instrução não for DELETE |
Caminho de registro do tipo de instrução |
Especifica um RecordPath a ser avaliado em cada registro para determinar o tipo de instrução. O RecordPath deve ser igual a INSERT, UPDATE, UPSERT ou DELETE. (Os tipos de operação no estilo Debezium também são compatíveis: “r” e “c” para INSERT, “u” para UPDATE, e “d” para DELETE) |
database-session-autocommit |
O modo de autocommit a ser definido na conexão de banco de dados que está sendo usada. Se definido como falso, a(s) operação(ões) será(ão) explicitamente confirmada(s) ou revertida(s) (com base no sucesso ou na falha, respectivamente). Se for definido como verdadeiro, o driver/banco de dados tratará automaticamente do commit/reversão. |
db-type |
Database Type for generating statements specific to a particular service or vendor. The Generic Type supports most cases but selecting a specific type enables optimal processing or additional features. |
put-db-record-allow-multiple-statements |
Se o tipo de instrução for “SQL” (conforme definido no atributo statement.type), esse campo indicará se o valor do campo deve ser dividido por um ponto e vírgula e se cada instrução deve ser executada separadamente. Se alguma instrução causar um erro, todo o conjunto de instruções será revertido. Se Tipo de instrução não for “SQL”, esse campo será ignorado. |
put-db-record-binary-format |
O formato a ser aplicado ao decodificar valores de cadeia de caracteres para binário. |
put-db-record-catalog-name |
The name of the database (or the name of the catalog, depending on the destination system) that the statement should update. This may not apply for the database that you are updating. In this case, leave the field empty. Note that if the property is set and the database is case-sensitive, the catalog name must match the database’s catalog name exactly. |
put-db-record-dcbp-service |
O Controller Service que é usado para obter uma conexão com o banco de dados para enviar registros. |
put-db-record-field-containing-sql |
Se Tipo de instrução for “SQL” (conforme definido no atributo statement.type), esse campo indicará qual campo no(s) registro(s) contém a instrução SQL a ser executada. O valor do campo deve ser uma única instrução SQL. Se Tipo de instrução não for “SQL”, esse campo será ignorado. |
put-db-record-max-batch-size |
Especifica o número máximo de instruções SQL a serem incluídas em cada lote enviado ao banco de dados. Zero significa que o tamanho do lote não é limitado e todas as instruções são colocadas em um único lote, o que pode causar problemas de uso elevado de memória para um número muito grande de instruções. |
put-db-record-query-timeout |
A quantidade máxima de tempo permitida para uma instrução SQL em execução; zero significa que não há limite. O tempo máximo inferior a 1 segundo será igual a 0. |
put-db-record-quoted-identifiers |
A ativação dessa opção fará com que todos os nomes de coluna sejam colocados entre aspas, permitindo que você use palavras reservadas como nomes de coluna em suas tabelas. |
put-db-record-quoted-table-identifiers |
A ativação dessa opção fará com que o nome da tabela seja colocado entre aspas para oferecer suporte ao uso de caracteres especiais no nome da tabela. |
put-db-record-record-reader |
Especifica o Controller Service a ser usado para analisar os dados de entrada e determinar o esquema dos dados. |
put-db-record-schema-name |
O nome do esquema ao qual a tabela pertence. Isso pode não se aplicar ao banco de dados que você está atualizando. Nesse caso, deixe o campo vazio. Observe que, se a propriedade for definida e o banco de dados diferenciar maiúsculas de minúsculas, o nome do esquema deverá corresponder exatamente ao nome do esquema do banco de dados. |
put-db-record-statement-type |
Specifies the type of SQL Statement to generate. Please refer to the database documentation for a description of the behavior of each operation. Please note that some Database Types may not support certain Statement Types. If “Use statement.type Attribute” is chosen, then the value is taken from the statement.type attribute in the FlowFile. The “Use statement.type Attribute” option is the only one that allows the “SQL’statement type. If “SQL” is specified, the value of the field specified by the “Field Containing SQL” property is expected to be a valid SQL statement on the target database, and will be executed as-is. |
put-db-record-table-name |
O nome de tabela que a instrução deve afetar. Observe que, se o banco de dados diferenciar maiúsculas de minúsculas, o nome da tabela deverá corresponder exatamente ao nome da tabela do banco de dados. |
put-db-record-translate-field-names |
Se for verdadeiro, o processador tentará traduzir os nomes de campo para os nomes de coluna apropriados para a tabela especificada. Se falso, os nomes dos campos devem corresponder exatamente aos nomes de coluna, ou a coluna não será atualizada |
put-db-record-unmatched-column-behavior |
Se um registro de entrada não tiver um mapeamento de campo para todas as colunas da tabela do banco de dados, essa propriedade especifica como lidar com a situação |
put-db-record-unmatched-field-behavior |
Se um registro de entrada tiver um campo que não seja mapeado para nenhuma das colunas da tabela do banco de dados, essa propriedade especifica como lidar com a situação |
put-db-record-update-keys |
Uma lista de nomes de coluna separados por vírgulas que identifica exclusivamente uma linha no banco de dados para as instruções UPDATE. Se o tipo de instrução for UPDATE e essa propriedade não for definida, serão usadas as chaves primárias da tabela. Nesse caso, se não houver chave primária, a conversão para SQL falhará se Comportamento de coluna sem correspondência estiver definido como FAIL. Essa propriedade é ignorada se Tipo de instrução for INSERT |
rollback-on-failure |
Specify how to handle error. By default (false), if an error occurs while processing a FlowFile, the FlowFile will be routed to “failure” or “retry” relationship based on error type, and processor can continue with next FlowFile. Instead, you may want to rollback currently processed FlowFiles and stop further processing immediately. In that case, you can do so by enabling this “Rollback On Failure” property. If enabled, failed FlowFiles will stay in the input relationship without penalizing it and being processed repeatedly until it gets processed successfully or removed by other means. It is important to set adequate “Yield Duration” to avoid retrying too frequently. |
table-schema-cache-size |
Especifica quantos esquemas de tabela devem ser armazenados em cache |
Relações¶
Nome |
Descrição |
|---|---|
failure |
Um FlowFile é encaminhado para essa relação se o banco de dados não puder ser atualizado e se a nova tentativa de operação também falhar, como uma consulta inválida ou uma violação de restrição de integridade |
retry |
Um FlowFile é encaminhado para essa relação se o banco de dados não puder ser atualizado, mas a tentativa de repetição da operação pode ser bem-sucedida |
success |
Criou com sucesso o FlowFile a partir do conjunto de resultados de consulta SQL. |
Grava atributos¶
Nome |
Descrição |
|---|---|
putdatabaserecord.error |
Se ocorrer um erro durante o processamento, o FlowFile será encaminhado para falha ou nova tentativa, e esse atributo será preenchido com a causa do erro. |
Casos de uso¶
Inserir registros em um banco de dados |