はじめに
Vertica では EXPORT_OBJECTS 関数を使用して、論理スキーマ (スキーマ、テーブル、ビュー、シーケンス、プロジェクション、制約、パーティション、SQL 関数) の DDL をエクスポートすることができます。
構文
EXPORT_OBJECTS 関数の構文をご紹介します。
EXPORT_OBJECTS ( [ ‘destination’ ] , [ ‘scope’ ] , [‘ksafe’ ] )
パラメータ | 説明 |
|---|---|
destination | 出力先のディレクトリを指定します。以下2種類の指定が行えます。 |
scope | 次のように、エクスポートする1つ以上のオブジェクトを指定します。 |
ksafe | MARK_DESIGN_KSAFE (K-safe値) ステートメントをファイルに出力するかどうか指定します。 |
実行例
EXPORT_OBJECTS 関数で、「テーブル名」を指定した場合の実行例をご紹介します。
### テーブル名を指定した場合 ###
dbadmin=> SELECT export_objects('', 'SCHEMA1.TABLE1');
export_objects
--------------------------------------------------------------
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;
SELECT MARK_DESIGN_KSAFE(1);
(1 row)9.2 以前は、すべてのテーブル制約が ALTER 文として DDL にエクスポートされました。
しかし、グローバルテンポラリテーブルでは、外部キー制約以外のテーブル制約を後から追加することができないため、手動で DDL を修正する必要がありました。9.3 以降では、外部キー制約を除くテーブル制約を CREATE 文の一部としてエクスポートするように変更されています。
### 9.2 以前の出力例 ###
dbadmin=> SELECT export_objects('', 'SCHEMA1.TABLE1');
export_objects
--------------------------------------------------------------
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; //★
<省略>参考情報
EXPORT_OBJECTS
https://www.vertica.com/docs/9.3.x/HTML/Content/Authoring/SQLReferenceManual/Functions/VerticaFunctions/EXPORT_OBJECTS.htm
Exporting Objects
https://www.vertica.com/docs/9.3.x/HTML/Content/Authoring/AdministratorsGuide/CopyExportData/ExportingObjects.htm
オブジェクト定義をエクスポートする方法(EXPORT_TABLES関数)
https://www.ashisuto.co.jp/cm/analytics-database/ddl_export.html
オブジェクト定義をエクスポートする方法(EXPORT_CATALOG関数)
https://www.ashisuto.co.jp/cm/analytics-database/export_catalog.html
Verticaで既存環境のテーブルのDDLとデータを一括で抽出する方法
https://www.ashisuto.co.jp/cm/analytics-database/export-all-data.html
検証バージョンについて
この記事の内容はVertica 9.3で確認しています。
更新履歴
2019/12/18 本記事を公開