insert

입력된 필드 값을 기준으로 대상 테이블을 동적으로 결정하여 레코드를 기록합니다. 클러스터 관리자 권한이 필요합니다.

명령어 속성

항목설명
명령어 유형가공 쿼리
필요 권한클러스터 관리자
라이선스 사용량해당 없음
병렬 실행지원
분산 실행수집 노드에서 실행 (mapper)

문법

insert table=STR [create=BOOL]

옵션

table=STR
대상 테이블 이름이 저장된 필드 이름. 각 레코드에서 이 필드의 값을 읽어 기록할 테이블을 결정합니다.
create=BOOL
t로 설정하면 대상 테이블이 존재하지 않을 때 자동으로 테이블을 생성합니다. (기본값: f)

입력 필드

필드타입필수 여부설명
table 옵션 필드문자열필수레코드를 기록할 대상 테이블 이름. null이거나 빈 문자열이면 해당 레코드를 건너뜁니다.
_time날짜선택레코드의 시각. 값이 null이거나 날짜 타입이 아니면 현재 시각을 사용합니다.

출력 필드

필드타입설명
_error문자열오류 발생 시 오류 메시지. table does not exist (테이블 미존재) 또는 table name is invalid format (테이블 이름 형식 오류)

오류 코드

파싱 오류
오류 코드메시지설명
30700권한이 없습니다. 클러스터 관리자 권한이 필요합니다.클러스터 관리자 권한 없이 실행한 경우
30701필드이름을 입력하십시오.table 옵션이 지정되지 않은 경우
런타임 오류

해당 사항 없음

설명

insert 명령어는 각 레코드에서 table 옵션으로 지정한 필드의 값을 읽어 대상 테이블을 결정하고, 해당 테이블에 레코드를 기록합니다. 테이블 이름 필드는 저장 시 레코드에서 제거됩니다.

각 레코드의 _time 필드 값을 저장 시각으로 사용하며, _time 필드가 없거나 날짜 타입이 아닌 경우 현재 시각을 사용합니다.

import 명령어와 달리 레코드마다 다른 테이블에 기록할 수 있어, 하나의 쿼리로 여러 테이블에 데이터를 분산 저장할 수 있습니다.

create=t 옵션을 사용하면 대상 테이블이 존재하지 않을 때 자동으로 테이블을 생성합니다. create 옵션을 사용하지 않은 상태에서 대상 테이블이 존재하지 않으면 해당 레코드의 _error 필드에 table does not exist 메시지를 할당합니다.

분산 환경에서는 수집 노드에서 실행됩니다.

사용 예

이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.

  1. HTTP 상태 코드에 따라 다른 테이블에 기록

    table WEB_APACHE_SAMPLE
    | eval _target = if(status >= 400, "WEB_ERROR_LOGS", "WEB_ACCESS_LOGS")
    | insert table=_target
    

    HTTP 상태 코드가 400 이상인 레코드는 WEB_ERROR_LOGS 테이블에, 나머지는 WEB_ACCESS_LOGS 테이블에 기록합니다. 저장된 레코드에서 _target 필드는 제거됩니다.

  2. 테이블 자동 생성

    table limit=10 WEB_APACHE_SAMPLE
    | eval _target = "WEB_APACHE_NEW"
    | insert table=_target create=t
    

    WEB_APACHE_NEW 테이블이 존재하지 않으면 자동으로 생성한 뒤 레코드를 기록합니다.

  3. HTTP 메서드별로 다른 테이블에 기록

    table WEB_APACHE_SAMPLE
    | eval _target = concat("WEB_", method, "_LOGS")
    | insert table=_target
    

    HTTP 메서드 값에 따라 WEB_GET_LOGS, WEB_POST_LOGS 등 메서드별 테이블에 레코드를 기록합니다.

호환성

insert 명령어는 소나 4.0 이전 버전부터 제공되었습니다.