はじめに
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」を指定した場合の実行例をご紹介します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
### 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 文の一部としてエクスポートするように変更されています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
### 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_CATALOGhttps://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関数)
http://vertica-tech.ashisuto.co.jp/ddl_export//
オブジェクト定義をエクスポートする方法(EXPORT_OBJECTS関数)
http://vertica-tech.ashisuto.co.jp/export_objects
Verticaで既存環境のテーブルのDDLとデータを一括で抽出する方法
http://vertica-tech.ashisuto.co.jp/export-all-data/
検証バージョンについて
この記事の内容はVertica 9.3で確認しています。更新履歴
2019/12/18 参考情報を追加2019/12/13 バージョン9.3リリース対応
2019/08/30 本記事を公開
- 投稿タグ
- DDL, EXPORT, エクスポート, テーブル定義, EXPORT_CATALOG