ClickHouse에서 SQL 데이터 삽입 및 덤프
ClickHouse는 다양한 방식으로 OLTP 데이터베이스 인프라에 쉽게 통합할 수 있습니다. 한 가지 방법은 SQL 덤프를 사용해 다른 데이터베이스와 ClickHouse 간에 데이터를 전송하는 것입니다.
SQL 덤프 생성
SQLInsert를 사용하여 데이터를 SQL 형식으로 덤프할 수 있습니다. ClickHouse는 데이터를 INSERT INTO <table name> VALUES(... 형태로 출력하며, 테이블 이름으로 output_format_sql_insert_table_name 설정 옵션을 사용합니다:
output_format_sql_insert_include_column_names 옵션을 비활성화하면 컬럼 이름을 생략할 수 있습니다:
이제 dump.sql 파일을 다른 OLTP 데이터베이스에 로드할 수 있습니다:
some_db MySQL 데이터베이스에 some_table 테이블이 존재한다고 가정합니다.
일부 DBMS는 단일 배치에서 처리할 수 있는 값의 수에 제한이 있을 수 있습니다. 기본적으로 ClickHouse는 65k개의 값으로 구성된 배치를 생성하지만, 이는 output_format_sql_insert_max_batch_size 옵션으로 변경할 수 있습니다.
값 집합 내보내기
ClickHouse에는 Values 형식이 있으며, 이는 SQL INSERT 구문과 비슷하지만 INSERT INTO table VALUES 부분은 생략하고 값들만으로 구성된 집합만을 반환합니다:
SQL 덤프에서 데이터 삽입하기
SQL 덤프를 읽을 때는 MySQLDump를 사용합니다.
기본적으로 ClickHouse는 알 수 없는 컬럼을 건너뜁니다(input_format_skip_unknown_fields 옵션으로 제어됨). 또한 덤프에서 처음 발견된 테이블의 데이터만 처리합니다(여러 테이블이 단일 파일로 덤프된 경우). DDL SQL 문은 처리하지 않습니다. MySQL 덤프에서 테이블로 데이터를 적재하려면(mysql.sql 파일):
또한 MySQL 덤프 파일에서 테이블을 자동으로 생성할 수도 있습니다:
여기서는 ClickHouse가 자동으로 추론한 구조를 기반으로 table_from_mysql라는 테이블을 생성했습니다. ClickHouse는 데이터에 따라 데이터 타입을 자동으로 판별하거나, DDL이 제공되는 경우 해당 DDL을 사용합니다:
기타 포맷
ClickHouse는 다양한 시나리오와 플랫폼을 지원하기 위해 텍스트 및 바이너리 형식을 포함한 여러 포맷을 지원합니다. 다음 문서에서 더 많은 포맷과 이를 사용하는 방법을 살펴보십시오:
또한 ClickHouse 서버 없이 로컬/원격 파일로 작업할 수 있는 휴대용 완전 기능 도구인 clickhouse-local도 확인하십시오.