本指南介绍如何将数据从 Snowflake 迁移到 ClickHouse。在 Snowflake 与 ClickHouse 之间迁移数据时,需要使用对象存储 (例如 S3) 作为传输过程中的中间存储。迁移过程还依赖于 Snowflake 的
COPY INTO 命令和 ClickHouse 的 INSERT INTO SELECT 命令。
从 Snowflake 导出数据
如上图所示,从 Snowflake 导出数据需要借助外部 stage。假设我们要导出一个 schema 如下的 Snowflake 表:us-east-1 区域的 2X-Large Snowflake 仓库,复制数据大约需要 30 分钟。导入到 ClickHouse
当数据已暂存到中间对象存储后,就可以使用 ClickHouse 函数 (例如 s3 table function) 将数据写入表中,如下所示。本示例使用适用于 AWS S3 的 s3 table function;如果使用 Google Cloud Storage,则可以使用 gcs table function;如果使用 Azure Blob 存储,则可以使用 azureBlobStorage table function。假设目标表的 schema 如下:INSERT INTO SELECT 命令将数据从 S3 插入到 ClickHouse 表中:关于嵌套列结构的说明原始 Snowflake 表 schema 中的
VARIANT 和 OBJECT 列默认会输出为 JSON 字符串,因此在将它们写入 ClickHouse 时,需要进行类型转换。像 some_file 这样的嵌套结构在复制时会被 Snowflake 转换为 JSON 字符串。导入这些数据时,需要在 ClickHouse 写入时将这些结构转换为 Tuple,具体方法如上所示,即使用 JSONExtract function。