【Snowflake】Snowflake ~ GET_DDL ~

■ はじめに

小ネタ。

 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