메인 콘텐츠로 건너뛰기

설명

이 포맷에서는 모든 데이터가 하나의 JSON 객체로 표현되며, 각 행은 JSONEachRow 포맷과 유사하게 해당 객체의 개별 필드로 표현됩니다.

사용 예시

기본 예시

다음과 같은 JSON이 주어졌다고 가정합니다:
객체 이름을 컬럼 값으로 사용하려면 특수 설정 format_json_object_each_row_column_for_object_name을 사용할 수 있습니다. 이 설정의 값에는 컬럼 이름을 지정하며, 이 컬럼 이름은 결과 객체에서 각 행의 JSON 키로 사용됩니다.

출력

test 테이블에 2개의 컬럼이 있다고 가정하겠습니다:
JSONObjectEachRow 포맷으로 출력하고, format_json_object_each_row_column_for_object_name 설정을 사용해 보겠습니다.
Query
Response

입력

이전 예시의 출력을 data.json 파일에 저장해 두었다고 가정하겠습니다:
Query
Response
스키마 추론에도 사용할 수 있습니다:
Query
Response

데이터 삽입

Query
ClickHouse에서는 다음이 허용됩니다:
  • 객체 내 key-value 쌍의 순서는 자유롭습니다.
  • 일부 값은 생략할 수 있습니다.
ClickHouse는 요소 사이의 공백과 객체 뒤의 쉼표를 무시합니다. 모든 객체를 한 줄에 전달할 수 있습니다. 줄바꿈으로 구분할 필요는 없습니다.

생략된 값 처리

ClickHouse는 생략된 값을 해당 데이터 타입의 기본값으로 채웁니다. DEFAULT expr가 지정된 경우, ClickHouse는 input_format_defaults_for_omitted_fields 설정에 따라 서로 다른 대체 규칙을 적용합니다. 다음 테이블을 살펴보겠습니다:
Query
  • input_format_defaults_for_omitted_fields = 0이면 xa의 기본값은 0입니다(UInt32 데이터 타입의 기본값이 0이기 때문입니다).
  • input_format_defaults_for_omitted_fields = 1이면 x의 기본값은 0이지만, a의 기본값은 x * 2입니다.
input_format_defaults_for_omitted_fields = 1로 데이터를 삽입하면, input_format_defaults_for_omitted_fields = 0으로 삽입할 때보다 ClickHouse가 더 많은 계산 리소스를 사용합니다.

데이터 조회

예시로 UserActivity 테이블을 살펴보겠습니다:
쿼리 SELECT * FROM UserActivity FORMAT JSONEachRow는 다음을 반환합니다:
JSON 포맷과 달리, 잘못된 UTF-8 시퀀스를 대체하지 않습니다. 값은 JSON과 동일한 방식으로 이스케이프됩니다.
문자열에는 임의의 바이트 집합도 출력할 수 있습니다. 테이블의 데이터를 정보 손실 없이 JSON으로 포맷할 수 있다고 확신하는 경우 JSONEachRow 포맷을 사용하십시오.

중첩 구조 사용

Nested 데이터 타입 컬럼이 있는 테이블에서는 동일한 구조의 JSON 데이터를 삽입할 수 있습니다. 이 기능은 input_format_import_nested_json 설정을 활성화하면 사용할 수 있습니다. 예를 들어, 다음과 같은 테이블이 있다고 가정해 보겠습니다:
Query
Nested 데이터 타입 설명에서 확인할 수 있듯이, ClickHouse는 중첩 구조의 각 구성 요소를 별도의 컬럼으로 처리합니다(이 테이블에서는 n.sn.i). 다음과 같은 방식으로 데이터를 삽입할 수 있습니다:
Query
데이터를 계층 구조의 JSON 객체로 삽입하려면 input_format_import_nested_json=1을 설정하세요.
이 설정이 없으면 ClickHouse가 예외를 발생시킵니다.
Query
Response
Query
Response
Query
Response

포맷 설정

마지막 수정일 2026년 6월 12일