clickhouse-client로 ClickHouse Cloud에 데이터 삽입하기

clickhouse-client로 ClickHouse Cloud에 데이터 삽입하기

clickhouse-client — ClickHouse 공식 CLI 클라이언트 — 를 사용해서 로컬 CSV 파일의 데이터를 ClickHouse Cloud 서비스에 삽입할 거예요. 클라이언트 설치부터 샘플 데이터 준비, 연결, 테이블 생성, 데이터 삽입까지 전체 흐름을 배워요.

출처: Insert data into ClickHouse Cloud using clickhouse-client

본문

사전 요구사항 (Prerequisites)

이 가이드를 성공적으로 따라 하려면 다음이 필요해요:

다음 퀵스타트도 완료했어야 해요:

만들게 될 것 (What you'll build)

이 퀵스타트에서는 clickhouse-client — ClickHouse 공식 CLI 클라이언트 — 를 사용해서 로컬 CSV 파일의 데이터를 ClickHouse Cloud 서비스에 삽입해요. clickhouse-client를 설치하고, 샘플 데이터셋을 준비하고, Cloud 서비스에 연결하고, 테이블을 만들고, 로컬 머신에서 데이터를 삽입할 거예요. 끝나면 로컬 파일을 ClickHouse Cloud에 로드하는 clickhouse-client 사용법을 알게 돼요. 이 워크플로는 CSV, Parquet, JSON 등 많은 포맷에서 동작해요.

1. clickhouse-client 설치하기

clickhouse-client는 ClickHouse에 연결하는 공식 CLI예요. ClickHouse 바이너리에 포함되어 있어요. 유니버설 인스톨러로 설치하세요:

curl https://clickhouse.com/ | sh

이렇게 하면 최신 clickhouse 바이너리가 현재 디렉터리에 내려받아져요. 설치를 확인해 보세요:

./clickhouse client --version

ClickHouse 버전 번호를 보여 주는 출력이 보이면 clickhouse-client를 사용할 준비가 된 거예요.

2. 샘플 CSV 파일 준비하기

이 퀵스타트가 단독으로 동작하도록 작은 샘플 CSV 파일을 만들게요. 터미널에서 다음을 실행하세요:

cat <<'EOF' > sample_data.csv
timestamp,event_type,user_id,duration_ms,status
2024-01-15 10:30:00,page_view,1001,120,success
2024-01-15 10:31:15,click,1002,45,success
2024-01-15 10:32:00,page_view,1003,200,success
2024-01-15 10:33:30,purchase,1001,1500,success
2024-01-15 10:34:00,click,1004,60,error
2024-01-15 10:35:45,page_view,1002,95,success
2024-01-15 10:36:10,purchase,1005,2200,success
2024-01-15 10:37:00,click,1003,30,success
2024-01-15 10:38:20,page_view,1004,150,error
2024-01-15 10:39:00,purchase,1002,1800,success
EOF

3. Cloud 서비스에 연결하기

아래 명령들은 Cloud 연결 정보 얻기 퀵스타트에서 설명한 대로 CLICKHOUSE_HOST, CLICKHOUSE_USER, CLICKHOUSE_PASSWORD를 환경 변수로 내보냈다고 가정해요. 내보내지 않았다면 그 자리에 실제 값을 직접 넣으면 돼요. Cloud 서비스에 간단한 쿼리를 실행해서 연결을 테스트해 보세요:

./clickhouse client \
  --host $CLICKHOUSE_HOST \
  --port 9440 \
  --user $CLICKHOUSE_USER \
  --password $CLICKHOUSE_PASSWORD \
  --secure \
  -q "SELECT 1"

연결이 성공하면 터미널에 1이 출력돼요. 연결 오류가 나면 Cloud 콘솔에서 서비스가 깨어 있는지, 호스트명과 비밀번호가 정확한지 확인하세요.

포트 9440은 ClickHouse Cloud의 보안 네이티브 프로토콜 포트예요. --secure 플래그는 TLS 암호화를 켜요. 이 둘은 모든 Cloud 연결에 필수예요.

4. 대상 테이블을 만들고 데이터 삽입하기

먼저 Cloud 서비스에 데이터를 받을 테이블을 만드세요:

./clickhouse client \
  --host $CLICKHOUSE_HOST \
  --port 9440 \
  --user $CLICKHOUSE_USER \
  --password $CLICKHOUSE_PASSWORD \
  --secure \
  -q "
    CREATE TABLE IF NOT EXISTS events (
      timestamp DateTime,
      event_type LowCardinality(String),
      user_id UInt32,
      duration_ms UInt32,
      status LowCardinality(String)
    )
    ENGINE = MergeTree
    ORDER BY (event_type, timestamp)
  "

이제 로컬 CSV 파일의 데이터를 삽입하세요. 이게 핵심 단계예요 — clickhouse-client는 파일을 stdin에서 읽어 원격 서비스로 스트리밍해요:

./clickhouse client \
  --host $CLICKHOUSE_HOST \
  --port 9440 \
  --user $CLICKHOUSE_USER \
  --password $CLICKHOUSE_PASSWORD \
  --secure \
  -q "INSERT INTO events FORMAT CSVWithNames" < sample_data.csv

clickhouse-client는 CSV 파일의 내용을 Cloud 서비스로 직접 보내요. CSVWithNames 포맷은 첫 번째 행이 컬럼 헤더임을 ClickHouse에 알려 줘요.

5. 데이터가 삽입되었는지 확인하기

행이 도착했는지 확인하려면 Cloud 서비스에 쿼리를 실행하세요:

./clickhouse client \
  --host $CLICKHOUSE_HOST \
  --port 9440 \
  --user $CLICKHOUSE_USER \
  --password $CLICKHOUSE_PASSWORD \
  --secure \
  -q "SELECT count() FROM events"

샘플 CSV의 행 수인 10이 보일 거예요. 데이터를 미리 보세요:

./clickhouse client \
  --host $CLICKHOUSE_HOST \
  --port 9440 \
  --user $CLICKHOUSE_USER \
  --password $CLICKHOUSE_PASSWORD \
  --secure \
  -q "SELECT * FROM events ORDER BY timestamp LIMIT 5"

이 동일한 워크플로는 Parquet, TSV, JSON, Avro, ORC 등 다른 많은 지원 포맷에서도 동작해요 — FORMAT 절만 바꾸고 적절한 파일을 파이프로 넣으면 돼요.

다음 단계 (Next steps)

이 퀵스타트에서 clickhouse-client를 설치하고, ClickHouse Cloud 서비스에 연결하고, 로컬 CSV 파일의 데이터를 Cloud로 스트리밍했어요. 같은 접근은 Parquet, JSON 등 수십 가지 포맷에도 적용돼요. 다음 퀵스타트를 계속 진행해 보세요:

또는 레퍼런스 문서로 더 깊이 들어가 보세요:

더 알아보기 (Learn more)