메인 콘텐츠로 건너뛰기
입력출력별칭

설명

HiveTextApache Hive 테이블에서 사용하는 텍스트 직렬화 포맷(Hive의 LazySimpleSerDe가 생성하는 포맷)을 읽습니다. 이 포맷은 구분자로 구분된 텍스트 포맷으로, CSV와 유사하며 필드는 Hive 기본 구분자인 \x01(Ctrl-A)로 구분됩니다. 필드 구분자는 input_format_hive_text_fields_delimiter로 구성할 수 있습니다. HiveText는 입력 전용 포맷입니다. 데이터에는 헤더 행이 없으며 값은 대상 테이블의 컬럼에 위치에 따라 매핑되므로, 컬럼 이름과 타입은 데이터에서 추론하지 않고 테이블(또는 명시적으로 제공된 구조)에서 가져옵니다. 읽는 동안 ClickHouse는 날짜와 시간을 best-effort 모드로 파싱하고(date_time_input_format 참조), 생략된 후행 필드는 컬럼 기본값으로 채우며, 인식하지 못하는 필드는 건너뜁니다. 필드 내부의 값은 Hive의 중첩 구분자가 아니라 CSV와 동일한 이스케이프 규칙으로 파싱됩니다. 특히, Array 타입의 컬럼은 대괄호로 묶인 표현(예: "['a','b','c']")에서 읽으며, Hive 컬렉션 구분자 \x02로 구분된 값에서는 읽지 않습니다.
중첩 구분자 설정은 적용되지 않습니다input_format_hive_text_collection_items_delimiterinput_format_hive_text_map_keys_delimiter 설정은 호환성을 위해 허용되지만 현재 파싱 중에는 사용되지 않습니다.
기본적으로 행에는 가변 개수의 필드가 허용됩니다(input_format_hive_text_allow_variable_number_of_columns 참조). 즉, 테이블보다 필드 수가 적은 행은 누락된 컬럼이 기본값으로 채워지고, 추가 후행 필드가 있는 행은 그 추가 필드를 건너뜁니다.

사용 예시

아래 예시에서는 입력 파일을 읽기 쉽도록 input_format_hive_text_fields_delimiter를 사용해 기본 필드 구분자를 쉼표(,)로 재정의합니다.

HiveText 파일 읽기

쉼표로 구분된 필드가 포함된 파일 hive_data.txt가 있다고 가정합니다:
hive_data.txt
1,3
3,5,9
컬럼 이름과 타입을 정의하는 테이블을 생성한 다음, FORMAT HiveText를 사용해 파일을 이 테이블에 삽입합니다:
Query
CREATE TABLE test_tbl (a UInt16, b UInt32, c UInt32) ENGINE = MergeTree ORDER BY a;

INSERT INTO test_tbl FROM INFILE 'hive_data.txt'
SETTINGS input_format_hive_text_fields_delimiter = ','
FORMAT HiveText;

SELECT * FROM test_tbl;
Response
┌─a─┬─b─┬─c─┐
│ 1 │ 3 │ 0 │
│ 3 │ 5 │ 9 │
└───┴───┴───┘
첫 번째 행 1,3에는 필드가 두 개뿐이므로, 누락된 컬럼 c는 기본값 0으로 채워집니다.

가변 개수의 컬럼

기본값인 input_format_hive_text_allow_variable_number_of_columns = 1을 사용하면, 테이블의 필드 수보다 더 많은 필드를 가진 행에서는 끝에 있는 추가 필드가 건너뛰어집니다:
hive_extras.txt
1,2,3,4,5
6,7,8
Query
CREATE TABLE test_extras (a UInt16, b UInt32, c UInt32) ENGINE = MergeTree ORDER BY a;

INSERT INTO test_extras FROM INFILE 'hive_extras.txt'
SETTINGS input_format_hive_text_fields_delimiter = ','
FORMAT HiveText;

SELECT * FROM test_extras ORDER BY a;
Response
┌─a─┬─b─┬─c─┐
│ 1 │ 2 │ 3 │
│ 6 │ 7 │ 8 │
└───┴───┴───┘
input_format_hive_text_allow_variable_number_of_columns = 0으로 대신 설정하면 필드 수가 엄격하게 적용되며, 테이블보다 필드 수가 적은 행은 파싱 예외를 발생시킵니다.

포맷 설정

SettingDescriptionDefault
input_format_hive_text_fields_delimiterHive Text File에서 필드 사이를 구분하는 구분자\x01
input_format_hive_text_collection_items_delimiterHive Text File에서 컬렉션(배열 또는 맵) 항목 사이를 구분하는 구분자입니다. 허용되지만 현재는 파싱 중에 사용되지 않습니다.\x02
input_format_hive_text_map_keys_delimiterHive Text File에서 맵의 키/값 쌍 사이를 구분하는 구분자입니다. 허용되지만 현재는 파싱 중에 사용되지 않습니다.\x03
input_format_hive_text_allow_variable_number_of_columnsHive Text 입력에서 추가 컬럼은 무시하고(파일에 예상보다 많은 컬럼이 있는 경우), 누락된 필드는 기본값으로 처리합니다.1
마지막 수정일 2026년 6월 25일