PutDatabaseRecord 2025.5.31.15

Pacote

org.apache.nifi | nifi-standard-nar

Descrição

O processador PutDatabaseRecord usa um RecordReader especificado para inserir (possivelmente vários) registros de um FlowFile de entrada. Esses registros são convertidos em instruções SQL e executados como uma única transação. Se ocorrer algum erro, o FlowFile será encaminhado para falha ou nova tentativa e, se os registros forem transmitidos com êxito, o FlowFile de entrada será encaminhado para êxito. O tipo de instrução executado pelo processador é especificado por meio da propriedade Tipo de instrução, que aceita alguns valores codificados, como INSERT, UPDATE e DELETE, bem como “Usar atributo statement.type”, que faz com que o processador obtenha o tipo de instrução de um atributo do FlowFile. IMPORTANT: Se Tipo de instrução for UPDATE, os registros de entrada não devem alterar o(s) valor(es) das chaves primárias (ou chaves de atualização especificadas pelo usuário). Se esses registros forem encontrados, a instrução UPDATE emitida para o banco de dados pode não fazer nada (se nenhum registro existente com os novos valores de chave primária for encontrado) ou pode inadvertidamente corromper os dados existentes (alterando os registros para os quais existem os novos valores das chaves primárias).

Tags

database, delete, insert, jdbc, put, record, sql, update

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

O tipo de banco de dados para gerar instruções específicas de um determinado serviço ou fornecedor. O tipo genérico oferece suporte à maioria dos casos, mas selecionar um tipo específico permite um processamento otimizado ou recursos adicionais.

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

O nome do catálogo que a instrução deve atualizar. 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 estiver definida e o banco de dados diferenciar maiúsculas de minúsculas, o nome do catálogo deverá corresponder exatamente ao nome do catálogo do banco de dados.

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

Especifica o tipo de instrução SQL a ser gerada. Consulte a documentação do banco de dados para obter uma descrição do comportamento de cada operação. Observe que alguns tipos de banco de dados podem não ser compatíveis com determinados tipos de instrução. Se a opção “Usar atributo statement.type” for escolhida, o valor será obtido do atributo statement.type no FlowFile. A opção “Usar atributo statement.type” é a única que permite o tipo de instrução “SQL”. Se “SQL” for especificado, espera-se que o valor do campo especificado pela propriedade “Campo contendo SQL” seja uma instrução SQL válida no banco de dados de destino e que seja executada no estado em que se encontra.

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

Especifique como tratar o erro. Por padrão (false), se ocorrer um erro durante o processamento de um FlowFile, o FlowFile será encaminhado para a relação “failure” ou “retry” com base no tipo de erro, e o processador poderá continuar com o próximo FlowFile. Em vez disso, você pode querer reverter o processamento atual nos FlowFiles e interromper o processamento imediatamente. Nesse caso, você pode fazer isso ativando a propriedade “Reversão em caso de falha”. Se ativado, os FlowFiles com falha permanecerão na relação de entrada sem penalizá-lo e serão processados repetidamente até que sejam processados com sucesso ou removidos por outros meios. É importante definir uma “Duração de rendimento” adequada para evitar novas tentativas com muita frequência.

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