PutDatabaseRecord 2025.5.31.15¶
번들¶
org.apache.nifi | nifi-standard-nar
설명¶
PutDatabaseRecord 프로세서는 지정된 RecordReader 를 사용하여 수신 플로우 파일에서 (여러 개일 수 있는) 레코드를 입력합니다. 이러한 레코드는 SQL 문으로 변환되어 단일 트랜잭션으로 실행됩니다. 오류가 발생하면 플로우 파일이 실패 또는 재시도로 라우팅되고, 레코드가 성공적으로 전송되면 수신 플로우 파일이 성공으로 라우팅됩니다. 프로세서에 의해 실행되는 문 유형은 INSERT, UPDATE, DELETE 같은 일부 하드코딩된 값을 허용하는 Statement Type 속성과 프로세서가 플로우 파일 특성에서 문 유형을 가져오도록 하는 ‘Use statement.type Attribute’를 통해 지정됩니다. IMPORTANT: 문 유형이 UPDATE 인 경우 수신 레코드는 기본 키(또는 사용자가 지정한 업데이트 키)의 값을 변경하지 않아야 합니다. 이러한 레코드가 발견되면 데이터베이스에 발급된 UPDATE 문은 아무 작업도 수행하지 않거나(새 기본 키 값을 가진 기존 레코드가 없는 경우), 실수로 기존 데이터를 손상시킬 수 있습니다(새 기본 키 값이 있는 레코드를 변경하는 방식으로).
입력 요구 사항¶
REQUIRED
민감한 동적 속성 지원¶
false
속성¶
속성 |
설명 |
---|---|
열 이름 변환 패턴 |
열 이름은 다음 정규식으로 정규화됩니다 |
Column Name Translation Strategy |
테이블 열 이름을 정규화하는 데 사용되는 전략입니다. 전략에 관계없이 대/소문자를 구분하지 않는 매칭을 수행하기 위해 열 이름이 대문자로 표시됩니다 |
데이터 레코드 경로 |
지정하면 이 속성은 수신 각 레코드에 대해 평가할 RecordPath 를 나타내며, RecordPath 를 평가한 결과의 레코드는 수신 전체 레코드를 보내는 대신 데이터베이스로 전송됩니다. 지정하지 않으면 수신 전체 레코드가 데이터베이스에 게시됩니다. |
데이터베이스 언어 서비스 |
특정 서비스 또는 공급업체와 관련된 문을 생성하기 위한 데이터베이스 언어 서비스입니다. |
키 삭제 |
데이터베이스에서 DELETE 문에 대한 행을 고유하게 식별하는 쉼표로 구분된 열 이름의 목록입니다. 문 유형이 DELETE 이고 이 속성이 설정되지 않은 경우 테이블의 열이 사용됩니다. 이 속성은 Statement Type이 DELETE 가 아닌 경우 무시됩니다 |
문 유형 레코드 경로 |
문 유형을 결정하기 위해 각 레코드에 대해 평가할RecordPath 를 지정합니다. RecordPath 는 INSERT, UPDATE 또는 DELETE 와 같아야 합니다. (Debezium 스타일 연산 유형도 지원됨: INSERT 의 경우 “r” 및 “c”, UPDATE 의 경우 “u”, DELETE 의 경우 “d”) |
database-session-autocommit |
사용 중인 데이터베이스 연결에 설정할 자동 커밋 모드입니다. false로 설정하면 작업은 명시적으로 커밋되거나 롤백됩니다(각각 성공 또는 실패에 따라). true로 설정하면 드라이버/데이터베이스가 자동으로 커밋/롤백을 처리합니다. |
db-type |
특정 서비스 또는 공급자와 관련된 문을 생성하기 위한 데이터베이스 유형으로, 일반 유형은 대부분의 경우를 지원하지만 특정 유형을 선택하면 프로세서의 추가 기능을 최적화할 수 있습니다. |
put-db-record-allow-multiple-statements |
문 유형이 ‘SQL’(statement.type 특성에 설정된 대로)인 경우 이 필드는 필드 값을 세미콜론으로 분할하여 각 문을 개별적으로 실행할지 여부를 나타냅니다. 오류를 일으키는 문이 있으면 전체 문이 롤백됩니다. 문 유형이 ‘SQL’이 아닌 경우 이 필드는 무시됩니다. |
put-db-record-binary-format |
문자열 값을 바이너리로 디코딩할 때 적용할 형식입니다. |
put-db-record-catalog-name |
문으로 업데이트할 카탈로그의 이름입니다. 업데이트 중인 데이터베이스에는 적용되지 않을 수 있습니다. 이 경우 필드를 비워 두십시오. 속성이 설정되어 있고 데이터베이스가 대/소문자를 구분하는 경우 카탈로그 이름은 데이터베이스의 카탈로그 이름과 정확히 일치해야 합니다. |
put-db-record-dcbp-service |
레코드를 전송하기 위해 데이터베이스에 대한 연결을 얻는 데 사용되는 컨트롤러 서비스입니다. |
put-db-record-field-containing-sql |
문 유형이 ‘SQL’(statement.type 특성에 설정된 대로)인 경우 이 필드는 실행할 SQL 문이 포함된 레코드의 필드를 나타냅니다. 필드 값은 단일 SQL 문이어야 합니다. 문 유형이 ‘SQL’이 아닌 경우 이 필드는 무시됩니다. |
put-db-record-max-batch-size |
데이터베이스에 전송되는 각 배치에 포함할 최대 SQL 문 수를 지정합니다. 0은 배치 크기에 제한이 없으며 모든 문이 단일 배치에 배치되므로 매우 많은 수의 문에 대해 높은 메모리 사용 문제가 발생할 수 있습니다. |
put-db-record-query-timeout |
실행 중인 SQL 문에 허용되는 최대 시간이며, 0은 제한이 없음을 의미합니다. 최대 시간이 1초 미만이면 0이 됩니다. |
put-db-record-quoted-identifiers |
이 옵션을 활성화하면 모든 열 이름이 따옴표로 묶여 테이블에서 예약어를 열 이름으로 사용할 수 있습니다. |
put-db-record-quoted-table-identifiers |
이 옵션을 활성화하면 테이블 이름에 특수 문자를 사용할 수 있도록 테이블 이름이 따옴표로 묶입니다. |
put-db-record-record-reader |
수신 데이터를 구문 분석하고 데이터의 스키마를 결정하는 데 사용할 컨트롤러 서비스를 지정합니다. |
put-db-record-schema-name |
테이블이 속한 스키마의 이름입니다. 업데이트 중인 데이터베이스에는 적용되지 않을 수 있습니다. 이 경우 필드를 비워 두십시오. 속성이 설정되어 있고 데이터베이스가 대/소문자를 구분하는 경우 스키마 이름이 데이터베이스의 스키마 이름과 정확히 일치해야 한다는 점에 유의하십시오. |
put-db-record-statement-type |
생성할 SQL 문의 유형을 지정합니다. 각 작업의 동작에 대한 설명은 데이터베이스 설명서를 참조하십시오. 일부 데이터베이스 유형은 특정 문 유형을 지원하지 않을 수 있습니다. ‘문 유형 특성 사용’을 선택하면 FlowFile 에 있는 문 유형 특성에서 값을 가져옵니다. ‘Use statement.type 특성 사용’옵션은’SQL’문 유형을 허용하는 유일한 옵션입니다. ‘SQL’을 지정하면 ‘SQL’ 속성을 포함하는 필드에 지정된 필드 값은 대상 데이터베이스에서 유효한 SQL 문으로 예상되며 그대로 실행됩니다. |
put-db-record-table-name |
문이 영향을 미칠 테이블의 이름입니다. 데이터베이스가 대/소문자를 구분하는 경우 테이블 이름은 데이터베이스의 테이블 이름과 정확히 일치해야 합니다. |
put-db-record-translate-field-names |
true이면 프로세서는 필드 이름을 지정된 테이블에 적합한 열 이름으로 변환하려고 시도합니다. false인 경우 필드 이름이 열 이름과 정확히 일치해야 하며, 그렇지 않으면 열이 업데이트되지 않습니다 |
put-db-record-unmatched-column-behavior |
수신 레코드에 모든 데이터베이스 테이블의 열에 대한 필드 매핑이 없는 경우 이 속성은 상황을 처리하는 방법을 지정합니다 |
put-db-record-unmatched-field-behavior |
수신 레코드에 데이터베이스 테이블의 열에 매핑되지 않는 필드가 있는 경우 이 속성은 상황을 처리하는 방법을 지정합니다 |
put-db-record-update-keys |
데이터베이스에서 UPDATE 문에 대한 행을 고유하게 식별하는 쉼표로 구분된 열 이름의 목록입니다. Statement Type이 UPDATE 이고 이 속성이 설정되지 않은 경우 테이블의 기본 키가 사용됩니다. 이 경우 일치하지 않는 열 동작이 FAIL 로 설정된 경우 기본 키가 존재하지 않으면 SQL 로의 변환이 실패합니다. Statement Type이 INSERT 인 경우 이 속성은 무시됩니다 |
실패 시 롤백 |
오류 처리 방법을 지정합니다. 기본값(False)으로, FlowFile 을 처리하는 동안 오류가 발생하면 FlowFile 은 오류 유형에 따라 ‘실패’ 또는 ‘재시도’ 관계로 라우팅되고 프로세서는 다음 FlowFile 로 계속 진행할 수 있습니다. 대신 현재 처리된 FlowFiles 을 롤백하고 추가 처리를 즉시 중지할 수 있습니다. 이 경우 ‘Rollback On Failure’ 속성을 활성화하면 됩니다. 이 옵션을 활성화하면 실패한 FlowFiles 은 성공적으로 처리되거나 다른 방법으로 제거될 때까지 불이익을 받지 않고 입력 관계에 남아 반복적으로 처리됩니다. 너무 자주 재시도하지 않도록 ‘생성 기간’을 적절하게 설정하는 것이 중요합니다. |
table-schema-cache-size |
캐시할 테이블 스키마 수를 지정합니다 |
관계¶
이름 |
설명 |
---|---|
실패 |
데이터베이스 쿼리가 잘못되었거나 무결성 제약 조건을 위반하는 등 데이터베이스가 업데이트될 수 없고 작업을 다시 시도해도 실패하는 경우 FlowFile 은 관계로 라우팅됩니다 |
retry |
데이터베이스를 업데이트할 수 없지만 작업을 다시 시도하면 성공할 수 있는 경우 FlowFile 은 관계로 라우팅됩니다 |
성공 |
SQL 쿼리 결과 세트에서 FlowFile 을 성공적으로 생성했습니다. |
Writes 특성¶
이름 |
설명 |
---|---|
putdatabaserecord.error |
처리 중에 오류가 발생하면 플로우 파일이 실패 또는 재시도로 라우팅되며, 이 특성은 오류의 원인으로 채워집니다. |
사용 사례¶
데이터베이스에 레코드 삽입하기 |