OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

オブジェクト定義をエクスポートする方法(EXPORT_CATALOG関数)

公開日:
更新日:
基本操作
#エクスポート
#関数

はじめに

EXPORT_CATALOG 関数を使用して、データベース内のオブジェクトを定義する DDL をエクスポートできます。データベースの物理設計を、別の環境でも再現したい場合に便利です。

構文

EXPORT_CATALOG 関数の構文をご紹介します。

EXPORT_CATALOG ( [ ‘destination’ ] , [ ‘scope’ ] )

パラメータ

説明

destination

出力先のディレクトリを指定します。以下2種類の指定が行えます。

・空の文字列('')
DDLを標準出力に出力します。

・DDL出力先のディレクトリ
スーパーユーザーのみ指定できます。
存在しないファイルを指定すると、新たにファイルが作成されます。ファイルが既に存在する場合は、その内容を上書きします。

scope

エクスポート対象を指定します。

・DESIGN(デフォルト)
ユーザーがアクセスできるスキーマ、テーブル、ビュー、シーケンス、プロジェクション、制約、パーティション、SQL 関数をエクスポートします。EXPORT_OBJECTS も参照してください。

・DESIGN_ALL
全てのデザイン生成 DDL と、データベースデザイナーで作成されたシステムオブジェクトをエクスポートします。対象は実行ユーザーがアクセスできるオブジェクトのみです。

・TABLES
ユーザーがアクセス可能な全てのテーブルと制約をエクスポートします。EXPORT_TABLES も参照してください。

・DIRECTED_QUERIES
データベースに保存されている全てのダイレクトクエリをエクスポートします。詳細は Managing Directed Queries を参照してください。

実行例

EXPORT_CATALOG 関数で出力範囲に「DESIGN」を指定した場合の実行例をご紹介します。

### DESIGN を指定した場合 ###
dbadmin=> SELECT export_catalog('', 'DESIGN');
                   export_catalog
-----------------------------------------------------------
CREATE SCHEMA SCHEMA1;

CREATE TABLE SCHEMA1.TABLE1
(
    P_PARTKEY int NOT NULL,
    P_NAME varchar(22),
    P_MFGR char(6),
    P_CATEGORY char(7),
    P_BRAND1 char(9),
    P_COLOR varchar(11),
    P_TYPE varchar(25),
    P_SIZE numeric(10,0),
    P_CONTAINER char(10),
    CONSTRAINT PK_PART PRIMARY KEY (P_PARTKEY) ENABLED
);

CREATE PROJECTION SCHEMA1.TABLE1_DBD_1_seg_sp /*+createtype(D)*/
(
 P_PARTKEY ENCODING DELTARANGE_COMP,
 P_NAME,
 P_MFGR ENCODING RLE,
 P_CATEGORY ENCODING RLE,
 P_BRAND1,
 P_COLOR,
 P_TYPE,
 P_SIZE ENCODING DELTAVAL,
 P_CONTAINER ENCODING RLE
)
AS
 SELECT TABLE1.P_PARTKEY,
        TABLE1.P_NAME,
        TABLE1.P_MFGR,
        TABLE1.P_CATEGORY,
        TABLE1.P_BRAND1,
        TABLE1.P_COLOR,
        TABLE1.P_TYPE,
        TABLE1.P_SIZE,
        TABLE1.P_CONTAINER
 FROM SCHEMA1.TABLE1
 ORDER BY TABLE1.P_MFGR,
          TABLE1.P_CATEGORY,
          TABLE1.P_CONTAINER,
          TABLE1.P_PARTKEY
SEGMENTED BY hash(TABLE1.P_PARTKEY) ALL NODES KSAFE 1;

CREATE PROJECTION SCHEMA1.TABLE1_DBD_2_seg_sp /*+createtype(D)*/
(
 P_PARTKEY ENCODING COMMONDELTA_COMP
)
AS
 SELECT TABLE1.P_PARTKEY
 FROM SCHEMA1.TABLE1
 ORDER BY TABLE1.P_PARTKEY
SEGMENTED BY hash(TABLE1.P_PARTKEY) ALL NODES KSAFE 1;


CREATE  VIEW SCHEMA1.VIEW1 AS
 SELECT TABLE1.P_PARTKEY,
        TABLE1.P_NAME,
        TABLE1.P_MFGR,
        TABLE1.P_CATEGORY,
        TABLE1.P_BRAND1,
        TABLE1.P_COLOR,
        TABLE1.P_TYPE,
        TABLE1.P_SIZE,
        TABLE1.P_CONTAINER
 FROM SCHEMA1.TABLE1;

CREATE FUNCTION public.isOrContains(map Long Varchar, val Varchar)
RETURN boolean AS
BEGIN
RETURN CASE WHEN (public.MapSize(map) <> (-1)) THEN public.MapContainsValue(map, val) ELSE (map = (val)) END;
END;

SELECT MARK_DESIGN_KSAFE(1);

(1 row)

9.2 以前は、すべてのテーブル制約が ALTER 文として DDL にエクスポートされました。
しかし、グローバルテンポラリテーブルでは、外部キー制約以外のテーブル制約を後から追加することができないため、手動で DDL を修正する必要がありました。9.3 以降では、外部キー制約を除くテーブル制約を CREATE 文の一部としてエクスポートするように変更されています。

### 9.2 以前の出力例 ###
dbadmin=> SELECT export_catalog('', 'TABLES');
                     export_catalog
--------------------------------------------------------------
CREATE TABLE SCHEMA1.TABLE1
(
    P_PARTKEY int NOT NULL,
    P_NAME varchar(22),
    P_MFGR char(6),
    P_CATEGORY char(7),
    P_BRAND1 char(9),
    P_COLOR varchar(11),
    P_TYPE varchar(25),
    P_SIZE numeric(10,0),
    P_CONTAINER char(10)
);

ALTER TABLE SCHEMA1.TABLE1 ADD CONSTRAINT PK_PART PRIMARY KEY (P_PARTKEY) ENABLED; //★

(1 row)

参考情報

EXPORT_CATALOG
https://www.vertica.com/docs/9.3.x/HTML/Content/Authoring/SQLReferenceManual/Functions/VerticaFunctions/EXPORT_CATALOG.htm

Exporting the Catalog
https://www.vertica.com/docs/9.3.x/HTML/Content/Authoring/AdministratorsGuide/CopyExportData/ExportingTheCatalog.htm

オブジェクト定義をエクスポートする方法(EXPORT_TABLES関数)
https://www.ashisuto.co.jp/cm/analytics-database/ddl_export.html

オブジェクト定義をエクスポートする方法(EXPORT_OBJECTS関数)
https://www.ashisuto.co.jp/cm/analytics-database/export_objects.html

Verticaで既存環境のテーブルのDDLとデータを一括で抽出する方法
https://www.ashisuto.co.jp/cm/analytics-database/export-all-data.html

検証バージョンについて

この記事の内容はVertica 9.3で確認しています。

更新履歴

2019/12/18 参考情報を追加
2019/12/13 バージョン9.3リリース対応
2019/08/30 本記事を公開