カテゴリ:

ユーティリティとハッシュ関数 (ユーティリティ)

GET_DDL

指定されたオブジェクトを再作成するために使用できる DDL ステートメントを返します。データベースとスキーマの場合、 GET_DDL は再帰的です。つまり、指定されたデータベース/スキーマ内でサポートされているすべてのオブジェクトを再作成するための DDL ステートメントを返します。

GET_DDL は、現在、次のオブジェクト型をサポートしています。

構文

GET_DDL( '<object_type>' , '[<namespace>.]<object_name>' [ , <use_fully_qualified_names_for_recreated_objects> ] )

引数

必須:

オブジェクト型

DDL が返されるオブジェクトの型を指定します。有効な値(サポートされているオブジェクト型に対応)は、次のとおりです。

  • DATABASE

  • SCHEMA

  • TABLE

  • VIEW (マテリアライズドビューを含む)

  • STREAM

  • TASK

  • SEQUENCE

  • FILE_FORMAT

  • PIPE

  • FUNCTION ( UDFsの場合)

  • PROCEDURE (ストアドプロシージャの場合)

名前空間.オブジェクト名

DDL が返されるオブジェクトの完全修飾名を指定します。

名前空間は、オブジェクトが存在するデータベースまたはスキーマです。

  • データベースには使用されません。

  • スキーマの場合、 データベース の形式を取ります。

  • スキーマオブジェクト(テーブル、ビュー、ストリーム、タスク、シーケンス、ファイル形式、パイプ、 UDFs)の場合、 データベース.スキーマ または スキーマ の形式を取ります。

データベースとスキーマがユーザーセッション内で現在使用されている場合、名前空間は オプション です。それ以外の場合は必須です。

オプション:

再作成されたオブジェクトに対する完全修飾名を使用

TRUE の場合、生成される DDL ステートメントは、再作成されるオブジェクトに完全修飾名を使用します。

デフォルト: FALSE

注釈

これは、 DDL ステートメントで参照される他のオブジェクトの名前(例:ビュー定義で参照されるテーブルの名前)には影響しません。

戻り値

オブジェクトを作成した DDL ステートメントのテキストを含む文字列(VARCHAR)を返します。

UDFs およびストアドプロシージャの場合、出力は元の DDLとわずかに異なる場合があります。たとえば、 UDF またはストアドプロシージャに JavaScript コードが含まれる場合、 JavaScript コードを囲む区切り文字が異なる場合があります。また、元の CREATE PROCEDURE ステートメントが EXECUTE AS OWNER または EXECUTE AS CALLER を指定しなかった場合、 GET_DDL からの出力にはデフォルトの EXECUTE AS OWNER が含まれます。

使用上の注意

  • 現在、 GET_DDL は外部テーブルをサポートしていません。

  • オブジェクト型 および オブジェクト名 (指定されている場合は 名前空間 を含む)は、一重引用符で囲む必要があります。

  • オブジェクト型 の場合、 TABLEVIEW は交換可能です。 TABLE オブジェクト型が指定され、名前で指定されたオブジェクトがビューである場合、関数はビューの DDL を返し、その逆も同様です。

  • オブジェクト型FUNCTION (つまり、 UDF)で、 UDF に引数がある場合、関数データ名を '関数名( [ 引数データ型 [ , ... ] ] )' の形式で関数名の一部として含める必要があります。

  • オブジェクト型PROCEDURE で、ストアドプロシージャに引数がある場合、関数データ名の一部として引数データ型を 'プロシージャ名( [ 引数データ型 [ , ... ] ] )' の形式で含める必要があります。

照合の詳細

  • Collation information is included in the input.

books_view という名前のビューの作成に使用された DDL を返します。

select get_ddl('view', 'books_view');
+-----------------------------------------------------------------------------+ 
| GET_DDL('VIEW', 'BOOKS_VIEW')                                               |
|-----------------------------------------------------------------------------|
|                                                                             |
| create or replace view BOOKS_VIEW as select title, author from books_table; |
|                                                                             |
+-----------------------------------------------------------------------------+

books_schema というスキーマの作成に使用された DDL とスキーマ内のオブジェクト(テーブル books_table と、ビュー books_view)を返します。

select get_ddl('schema', 'books_schema');
+-----------------------------------------------------------------------------+ 
| GET_DDL('SCHEMA', 'BOOKS_SCHEMA')                                           |
|-----------------------------------------------------------------------------|
| create or replace schema BOOKS_SCHEMA;                                      |
|                                                                             |
| create or replace TABLE BOOKS_TABLE (                                       |
| 	ID NUMBER(38,0),                                                      |
| 	TITLE VARCHAR(255),                                                   |
| 	AUTHOR VARCHAR(255)                                                   |
| );                                                                          |
|                                                                             |
| create or replace view BOOKS_VIEW as select title, author from books_table; |
|                                                                             |
+-----------------------------------------------------------------------------+

再作成するオブジェクトに完全修飾名を使用する DDL を返します。

select get_ddl('schema', 'books_schema', true);
+---------------------------------------------------------------------------------------------------+
| GET_DDL('SCHEMA', 'BOOKS_SCHEMA', TRUE)                                                           |
|---------------------------------------------------------------------------------------------------|
| create or replace schema BOOKS_DB.BOOKS_SCHEMA;                                                   |
|                                                                                                   |
| create or replace TABLE BOOKS_DB.BOOKS_SCHEMA.BOOKS_TABLE (                                       |
| 	ID NUMBER(38,0),                                                                            |
| 	TITLE VARCHAR(255),                                                                         |
| 	AUTHOR VARCHAR(255)                                                                         |
| );                                                                                                |
|                                                                                                   |
| create or replace view BOOKS_DB.BOOKS_SCHEMA.BOOKS_VIEW as select title, author from books_table; |
|                                                                                                   |
+---------------------------------------------------------------------------------------------------+

注釈

上記の例で示されているように、 DDL ステートメントは、ビューの作成に使用されるテーブルの完全修飾名を使用していません。このテーブルの名前を解決するために、Snowflakeはデータベースの名前とビューのスキーマの名前を使用します。

NUMBER 型の2つのパラメーターを持つ multiply という名前の UDF の作成に使用される DDL を返します。

select get_ddl('function', 'multiply(number, number)');

--------------------------------------------------+
 GET_DDL('FUNCTION', 'MULTIPLY(NUMBER, NUMBER)')  |
--------------------------------------------------+
 CREATE OR REPLACE "MULTIPLY"(A NUMBER, B NUMBER) |
 RETURNS NUMBER(38,0)                             |
 COMMENT='multiply two numbers'                   |
 AS 'a * b';                                      |
--------------------------------------------------+

DDL を返し、 FLOAT 型のパラメーターを1つ持つ stproc_1 という名前のストアドプロシージャを作成します。

SELECT GET_DDL('procedure', 'stproc_1(float)');
+---------------------------------------------------+
| GET_DDL('PROCEDURE', 'STPROC_1(FLOAT)')           |
|---------------------------------------------------|
| CREATE OR REPLACE PROCEDURE "STPROC_1"("F" FLOAT) |
| RETURNS FLOAT                                     |
| LANGUAGE JAVASCRIPT                               |
| EXECUTE AS OWNER                                  |
| AS '                                              |
| ''return F;''                                     |
| ';                                                |
+---------------------------------------------------+