💨

Snowflake ゼロコピークローンについて

2022/11/14に公開

Snowflakeにはデータベース、スキーマ、テーブルのコピーは非常に簡単にできます。
ゼロコピークローンという機能があり、これを活用することで実現できます。
どのようにしてコピーするのか手順と動作を見ていきましょう。

テーブルのクローン

クローン対象のテーブルの確認

クローンするテーブルにどのようなデータが格納されているか確認してみる。

SELECT * FROM OUR_FIRST_DB.PUBLIC.CUSTOMERS

テーブルのクローンを実行

CREATE TABLE {クローン後の新しいテーブル名} CLONE {クローン元のテーブル名}

CREATE TABLE OUR_FIRST_DB.PUBLIC.CUSTOMERS_CLONE CLONE OUR_FIRST_DB.PUBLIC.CUSTOMERS

クローンしたテーブルの中身を確認してみる

SELECT * FROM OUR_FIRST_DB.PUBLIC.CUSTOMERS_CLONE

行数やフィールドの値など同じテーブルが作成されました。

管理画面の左のバーにも表示されています。

クローンしたテーブルを更新してみる

作成したクローンテーブルを問題なくデータ更新できるか確認してみます。
LAST_NAMEカラムをNULLに更新してみます。

UPDATE OUR_FIRST_DB.public.CUSTOMERS_CLONE SET LAST_NAME = NULL;

確認してみます。

SELECT * FROM OUR_FIRST_DB.PUBLIC.CUSTOMERS_CLONE;

LAST_NAMEカラムをNULLに更新されていますね。

一時テーブルのクローン

Snowflakeでは一時テーブル(Temporary Table)のクローンはサポートされていません。
それを確認してみます。

一時テーブル(Temporary Table)の作成

CREATE OR REPLACE TEMPORARY TABLE OUR_FIRST_DB.PUBLIC.TEMP_TABLE(
  id int);
CREATE TEMPORARY TABLE OUR_FIRST_DB.PUBLIC.TABLE_COPY CLONE OUR_FIRST_DB.PUBLIC.TEMP_TABLE

SQL compilation error:Temp table can not be cloned to a permanent table; clone to a transient table instead.

スキーマのクローンを実行

OUR_FIRST_DBの'PUBLIC'スキーマをクローンしてみます。

CREATE SCHEMA OUR_FIRST_DB.COPIED_SCHEMA
CLONE OUR_FIRST_DB.PUBLIC;

DBのクローンを実行

OUR_FIRSTをクローンします。

CREATE DATABASE OUR_FIRST_DB_COPY
CLONE OUR_FIRST_DB;

以上で各種クローンの方法と動作でした。

Discussion