■ はじめに
小ネタ。 Snowflakeにおいて、開発環境のテーブル定義が古かったが、 DDLが管理されてなかった。 そのため、Snowflake でテーブルをExportするやり方を調べた。 今後も使いそうだし、 テーブル以外にもFile Formatなどにも使えるので メモっておく。
目次
【1】GET_DDL 【2】基本構文 1)オプション「use_fully_qualified_names_for_recreated_objects」 【3】サポートしているオブジェクトタイプ 【4】サンプル 例1:テーブル 例2:ファイルフォーマット
【1】GET_DDL
* 指定されたオブジェクトを再作成するため DDL 文を返す
https://docs.snowflake.com/ja/sql-reference/functions/get_ddl.html
【2】基本構文
SELECT GET_DDL ( '<object_type>' , '[<namespace>.]<object_name>' [ , <use_fully_qualified_names_for_recreated_objects> ] );
1)オプション「use_fully_qualified_names_for_recreated_objects」
* 第三引数 use_fully_qualified_names_for_recreated_objects = true を 設定した場合、例えば、<database>.<schema>.<table_name> のように完全修飾名として、出力される
例:use_fully_qualified_names_for_recreated_objects
-- 指定なし(false) select get_ddl('table', 'BOOKS_TABLE'); => create or replace TABLE BOOKS_TABLE ( -- trueを指定 (「BOOKS_DB.BOOKS_SCHEMA」が付加) select get_ddl('table', 'BOOKS_TABLE', true); => create or replace TABLE BOOKS_DB.BOOKS_SCHEMA.BOOKS_TABLE (
【3】サポートしているオブジェクトタイプ
https://docs.snowflake.com/ja/sql-reference/functions/get_ddl.html
より一部抜粋 1)データベース(CREATE DATABASE を参照) 2)スキーマ(CREATE SCHEMA を参照) 3)テーブル(CREATE TABLE を参照) 4)外部テーブル(CREATE EXTERNAL TABLE を参照) 5)ビュー(CREATE VIEW を参照) 6)ファイル形式(CREATE FILE FORMAT を参照) 7)UDFs、外部関数を含む(CREATE FUNCTION を参照) など
【4】サンプル
例1:テーブル
select get_ddl('table', 'BOOKS_TABLE'); +----------------------------------------------------------+ | GET_DDL('TABLE', 'BOOKS_TABLE') +----------------------------------------------------------+ | create or replace TABLE BOOKS_TABLE ( | ID NUMBER(38,0), | TITLE VARCHAR(255), | AUTHOR VARCHAR(255) | ); +----------------------------------------------------------+
例2:ファイルフォーマット
select get_ddl('FILE_FORMAT', 'DEMO_FILE_FORMAT'); +----------------------------------------------------------+ | GET_DDL('FILE_FORMAT', 'DEMO_FILE_FORMAT') +----------------------------------------------------------+ | CREATE OR REPLACE FILE FORMAT DEMO_FILE_FORMAT ( | FIELD_DELIMITER = 'NONE' | ESCAPE_UNENCLOSED_FIELD = 'NONE' | COMPRESSION = auto | ); +----------------------------------------------------------+
関連記事
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/16/231010
Snowflake ~ ストレージ統合 ~
https://dk521123.hatenablog.com/entry/2022/06/29/221037
Snowflake ~ SHOW / DESCRIBE ~
https://dk521123.hatenablog.com/entry/2022/02/24/231532
Snowflake ~ GRANT OWNERSHIP ~
https://dk521123.hatenablog.com/entry/2022/02/25/094250
エラー「Insufficient privileges to operate」時の対応
https://dk521123.hatenablog.com/entry/2022/08/02/090439