이 가이드에서는 Snowflake에서 ClickHouse로 데이터를 마이그레이션하는 방법을 설명합니다.Snowflake와 ClickHouse 간 데이터 마이그레이션에는 전송을 위한 중간 저장소로 S3와 같은 객체 저장소가 필요합니다. 또한 마이그레이션 프로세스에서는 Snowflake의
COPY INTO 명령과 ClickHouse의 INSERT INTO SELECT
명령을 사용합니다.
Snowflake에서 데이터 내보내기
Snowflake에서 데이터를 내보내려면 위 다이어그램에 표시된 것처럼 외부 스테이지를 사용해야 합니다.다음과 같은 스키마를 가진 Snowflake 테이블을 내보낸다고 가정하겠습니다.us-east-1 Region에 위치한 2X-Large Snowflake warehouse를 사용하는 경우 데이터를 S3 버킷으로 복사하는 데 약 30분이 걸립니다.ClickHouse로 가져오기
데이터가 중간 객체 스토리지에 스테이징되면 아래와 같이 s3 테이블 함수와 같은 ClickHouse 함수를 사용해 데이터를 테이블에 삽입할 수 있습니다.이 예시에서는 AWS S3용 s3 테이블 함수를 사용하지만, Google Cloud Storage에는 gcs 테이블 함수를 사용할 수 있고 Azure Blob Storage에는 azureBlobStorage 테이블 함수를 사용할 수 있습니다.대상 테이블 스키마가 다음과 같다고 가정하겠습니다.INSERT INTO SELECT 명령을 사용해 S3의 데이터를 ClickHouse 테이블에 삽입할 수 있습니다.중첩 컬럼 구조에 대한 참고원래 Snowflake 테이블 스키마의
VARIANT 및 OBJECT 컬럼은 기본적으로 JSON 문자열로 출력되므로, 이를 ClickHouse에 삽입할 때 형 변환해야 합니다.some_file과 같은 중첩 구조는 Snowflake에서 복사 시 JSON 문자열로 변환됩니다. 이 데이터를 가져오려면 위에 표시된 것처럼 JSONExtract function을 사용해 ClickHouse의 삽입 시점에 이러한 구조를 튜플로 변환해야 합니다.