はじめに

Vertica では EXPORT_OBJECTS 関数を使用して、論理スキーマ (スキーマ、テーブル、ビュー、シーケンス、プロジェクション、制約、パーティション、SQL 関数) の DDL をエクスポートすることができます。

構文

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

EXPORT_OBJECTS ( [ ‘destination’ ] , [ ‘scope’ ] , [‘ksafe’ ] )
パラメータ説明
destination出力先のディレクトリを指定します。以下2種類の指定が行えます。

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

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

[database.]schema[.object][,…]

・空の文字列が指定された場合
ユーザーがアクセスできるすべてのオブジェクトをエクスポートします。

・スキーマが指定された場合
スキーマ内のすべてのオブジェクトをエクスポートします。

・テーブルが指定された場合
テーブル、プロジェクション、制約をエクスポートします。

・ビューが指定された場合
ビューをエクスポートします。
ksafeMARK_DESIGN_KSAFE (K-safe値) ステートメントをファイルに出力するかどうか指定します。

・true (デフォルト)
ファイルに出力されます。
MARK_DESIGN_KSAFE ステートメントはファイルの最後に出力されます。

・false
ファイルに出力されません。


実行例

EXPORT_OBJECTS 関数で、「テーブル名」を指定した場合の実行例をご紹介します。


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


参考情報

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関数)
http://vertica-tech.ashisuto.co.jp/ddl_export/

オブジェクト定義をエクスポートする方法(EXPORT_CATALOG関数)
http://vertica-tech.ashisuto.co.jp/export_catalog/

Verticaで既存環境のテーブルのDDLとデータを一括で抽出する方法
http://vertica-tech.ashisuto.co.jp/export-all-data/

検証バージョンについて

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

更新履歴

2019/12/18 本記事を公開