UpdateDatabaseTable 프로세서
UpdateDatabaseTable 프로세서
Openflow의 UpdateDatabaseTable 프로세서는 JDBC 연결과 레코드를 사용하여 데이터베이스 테이블 변경을 생성하는 데 사용합니다. 이 문서에서 프로세서의 번들, 설명, 속성, 관계 등을 확인할 수 있습니다.
출처: Snowflake 문서
본문
번들 (Bundle)
org.apache.nifi | nifi-standard-nar
설명 (Description)
이 프로세서는 JDBC 연결과 들어오는 레코드를 사용하여 들어오는 레코드를 지원하는 데 필요한 모든 데이터베이스 테이블 변경을 생성합니다. 레코드 최상위 필드 중 어떤 것도 그 자체가 열이 되도록 의도된 중첩 필드를 가지지 않는, 평면(flat) 레코드 레이아웃을 기대합니다.
태그 (Tags)
alter, database, jdbc, metadata, table, update
입력 요구사항 (Input Requirement)
REQUIRED
민감한 동적 속성 지원 (Supports Sensitive Dynamic Properties)
false
속성 (Properties)
| 속성 (Property) | 설명 (Description) |
|---|---|
| Column Name Translation Pattern | 열 이름이 이 정규 표현식으로 정규화됩니다. |
| Column Name Translation Strategy | 테이블 열 이름을 정규화하는 데 사용하는 전략입니다. 전략과 무관하게 대소문자 구분 없는 매칭을 위해 열 이름은 대문자로 변환됩니다. |
| Database Dialect Service | 특정 서비스나 벤더에 맞는 문을 생성하는 Database Dialect Service입니다. |
| db-type | 특정 서비스나 벤더에 맞는 문을 생성하기 위한 데이터베이스 유형입니다. Generic Type은 대부분의 경우를 지원하지만 특정 유형을 선택하면 최적의 처리나 추가 기능이 가능합니다. |
| record-reader | 들어오는 flow file을 읽기 위한 서비스입니다. reader는 레코드의 스키마를 결정하는 데만 사용되며 실제 레코드는 처리되지 않습니다. |
| updatedatabasetable-catalog-name | 문이 업데이트할 카탈로그의 이름입니다. 업데이트하는 데이터베이스에는 적용되지 않을 수 있습니다. 그런 경우 필드를 비워 두세요. 속성이 설정되고 데이터베이스가 대소문자를 구분하면 카탈로그 이름이 데이터베이스의 카탈로그 이름과 정확히 일치해야 합니다. |
| updatedatabasetable-create-table | 대상 테이블이 존재하지 않을 때 처리 방법을 지정합니다(예: 생성하거나 실패). |
| updatedatabasetable-dbcp-service | 데이터베이스에 대한 연결을 얻는 데 사용하는 Controller Service입니다. |
| updatedatabasetable-primary-keys | 데이터베이스에서 행을 고유하게 식별하는 레코드 필드 이름의 쉼표 구분 목록입니다. 이 속성은 지정된 테이블을 만들어야 할 때만 사용되며, 이 경우 Primary Key Fields가 새로 만든 테이블의 기본 키를 지정하는 데 사용됩니다. 중요: Quote Column Identifiers가 false이고 데이터베이스가 대소문자 구분 없는 열 이름을 허용하지 않는 한, Primary Key Fields는 레코드 필드 이름과 정확히 일치해야 합니다. 실제로는 Primary Key Fields를 레코드 필드 이름과 정확히 일치시키는 것이 좋으며, 그 값들이 생성된 테이블의 열 이름이 됩니다. |
| updatedatabasetable-query-timeout | 드라이버가 쿼리 실행을 기다릴 시간(초)을 설정합니다. 값 0은 제한 시간이 없음을 뜻합니다. 참고: 0이 아닌 값은 드라이버가 지원하지 않을 수 있습니다. |
| updatedatabasetable-quoted-column-identifiers | 이 옵션을 활성화하면 모든 열 이름이 따옴표로 묶여 예약어를 열 이름으로 사용할 수 있게 되고/되거나 레코드 필드 이름이 열 이름과 정확히 일치하도록 강제됩니다. |
| updatedatabasetable-quoted-table-identifiers | 이 옵션을 활성화하면 테이블 이름이 따옴표로 묶여 테이블 이름에 특수 문자를 사용할 수 있게 되고/되거나 Table Name 속성 값이 대상 테이블 이름과 정확히 일치하도록 강제됩니다. |
| updatedatabasetable-record-writer | 결과를 FlowFile에 쓰는 데 사용할 Controller Service를 지정합니다. Record Writer는 상속된 스키마를 모방하도록 Inherit Schema를 사용해야 합니다. 즉, writer에 명시적 스키마를 정의할 필요가 없으며 열 유형에서 스키마를 추론하는 데 사용되는 것과 동일한 논리로 제공됩니다. Create Table Strategy가 Create If Not Exists로 설정된 경우, 데이터가 생성된 테이블 위치에 들어가려면 Record Writer의 출력 형식이 Record Reader의 형식과 일치해야 합니다. 참고: 이 속성은 Update Field Names가 true이고 필드 이름이 모두 열 이름과 정확히 일치하지 않을 때만 사용됩니다. 어떤 필드 이름도 업데이트할 필요가 없거나(또는 Update Field Names가 false) Record Writer가 사용되지 않고 입력 FlowFile이 수정 없이 success 또는 failure로 라우팅됩니다. |
| updatedatabasetable-schema-name | 테이블이 속한 데이터베이스 스키마의 이름입니다. 업데이트하는 데이터베이스에는 적용되지 않을 수 있습니다. 그런 경우 필드를 비워 두세요. 속성이 설정되고 데이터베이스가 대소문자를 구분하면 스키마 이름이 데이터베이스의 스키마 이름과 정확히 일치해야 합니다. |
| updatedatabasetable-table-name | 업데이트할 데이터베이스 테이블의 이름입니다. 테이블이 존재하지 않으면 Create Table 속성 값에 따라 테이블을 만들거나 오류를 발생시킵니다. |
| updatedatabasetable-translate-field-names | true이면 대상 테이블에서 필드 이름이 열로 존재하는지 여부를 결정하기 위해 프로세서가 필드 이름을 지정된 테이블의 해당 열 이름으로 변환하려고 시도합니다. 참고: 대상 테이블이 존재하지 않고 만들어질 예정이라면 이 속성은 무시되고 필드 이름이 그대로 사용됩니다. false이면 필드 이름이 열 이름과 정확히 일치해야 하며, 그렇지 않으면 열을 찾지 못하거나 열이 이미 존재한다는 오류가 보고될 수 있습니다. |
| updatedatabasetable-update-field-names | 필드 이름이 지정된 테이블의 정확한 열 이름으로 설정되도록 출력 스키마를 업데이트할지 여부를 나타냅니다. 들어오는 레코드 필드 이름이 대소문자 관점에서 테이블의 열 이름과 일치하지 않을 수 있을 때 사용해야 합니다. 예를 들어 출력 FlowFile이 Oracle용이라면 필드 이름이 열 이름과 정확히 일치해야 하므로 이 속성을 true로 설정해야 합니다. 참고: 필드 이름을 업데이트할 때 Translate Field Names 속성 값은 무시되고, 대신 데이터베이스가 반환한 열 이름과 일치하도록 업데이트됩니다. |
관계 (Relationships)
| 이름 (Name) | 설명 (Description) |
|---|---|
| failure | 레코드를 데이터베이스로 전송할 수 없으면 레코드가 포함된 FlowFile이 이 관계로 라우팅됩니다. |
| success | 레코드를 데이터베이스로 성공적으로 전송한 후 레코드가 포함된 FlowFile이 이 관계로 라우팅됩니다. |
기록하는 속성 (Writes attributes)
| 이름 (Name) | 설명 (Description) |
|---|---|
| output.table | success와 failure 관계로 라우팅되는 flow file에 기록되며, 대상 테이블 이름을 포함합니다. |
| output.path | success와 failure 관계로 라우팅되는 flow file에 기록되며, 파일 시스템에서 테이블까지의 경로(테이블이 파티션된 경우 파티션 위치)를 포함합니다. |
| mime.type | Record Writer를 지정하고 Update Field Names가 true인 경우에만 mime.type 속성을 Record Writer가 지정한 MIME Type으로 설정합니다. |
| record.count | Record Writer를 지정하고 Update Field Names가 true인 경우에만 FlowFile의 레코드 수를 설정합니다. |