■ はじめに
念のために、Snowflakeの既存のテーブルをバックアップとる って作業が発生しそうなので、簡単な方法でできないか調べてみた => 結論としては、原始的にSQLでやることになりそうだが その経過で調べた「CREATE CLONE」についても触れる => あと、CREATE TABLE ... AS SELECT が、CTASって略せるらしい (公式ドキュメントがそう言ってた)
目次
【1】SQLでバックアップテーブルを作成する 1)サンプル 【2】補足1:CREATE CLONE 【3】補足2:テーブルのリネーム
【1】SQLでバックアップテーブルを作成する
* 原始的に、SQLでやる。
1)サンプル
例1:CREATE TABLE ... AS SELECT (CTAS)を使う
https://docs.snowflake.com/ja/sql-reference/sql/create-table.html#create-table-as-select-also-referred-to-as-ctas
use database your_database; use schema your_schema; -- CTASっていうらしい(公式より) create table backup_table as ( select $1 as id, $2 as name from your_database.your_schema.target_table );
例2:SELECT INSERTを使う
use database your_database; use schema your_schema; create table your_database.your_schema.backup_table ( id varchar, name varchar ); insert into your_database.your_schema.backup_table(id, name) select * from your_database.your_schema.target_table;
【2】補足1:CREATE CLONE
* 以下の「CREATE <オブジェクト> ... CLONE」を使って テーブルのバックアップを考えたが、ゼロコピークローンで 物理コピーじゃないので、使用できなさそう
https://docs.snowflake.com/ja/sql-reference/sql/create-clone.html
より抜粋 ~~~~ システム内の既存のオブジェクトのコピーを作成します。 このコマンドは主に、データベース、スキーマ、および テーブルの ゼロコピークローン を作成するために使用されます。 ~~~~
補足:ゼロコピークローンとは?
https://dk521123.hatenablog.com/entry/2021/11/27/134934
より抜粋 ~~~~~ * Snowflake は、「論理テーブル(メタ情報)」と「物理ストレージ」が分離されている => Cloneの場合、データが物理的にはコピーされず、同じデータを参照 => 物理的にはコピーされないので、めっちゃ早い(だから「ゼロコピー」) ~~~~~
【3】補足2:テーブルのリネーム
* とりあえず、テーブルをどかしておくだけなら 「ALTER TABLE ... RENAME TO」でリネームしておけばいい => 「ALTER TABLE ... RENAME TO」についての詳細は、 以下の関連記事を参照のこと
https://dk521123.hatenablog.com/entry/2022/09/03/012113
関連記事
Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world ~
https://dk521123.hatenablog.com/entry/2021/11/22/212520
Snowflake ~ 基本編 / ゼロコピークローン ~
https://dk521123.hatenablog.com/entry/2021/11/27/134934
Snowflake ~ 基本編 / ステージ ~
https://dk521123.hatenablog.com/entry/2022/09/01/220643
Snowflake ~ 基本編 / CREATE・ALTER TABLE ~
https://dk521123.hatenablog.com/entry/2022/09/03/012113