导出编录

Vertica 函数 EXPORT_CATALOG 生成用于将数据库设计复制到另一个群集的 SQL 脚本。此脚本会复制源数据库的物理架构设计。您可以按如下方式调用此函数:

EXPORT_CATALOG ( ['[destination]' [, '[scope]']] )

SQL 脚本符合以下要求:

  • 仅包括用户有权访问的对象。

  • 根据对象依赖关系对 CREATE 语句进行排序,以便可以按正确的顺序重新创建它们。例如,如果表在非 PUBLIC 架构中,则所需的 CREATE SCHEMA 语句位于 CREATE TABLE 语句之前。同样,表的 CREATE ACCESS POLICY 语句跟在表的 CREATE TABLE 语句之后。

  • 如果可能,使用其 KSAFE 子句(如果有)创建投影,否则使用其 OFFSET 子句。

设置导出范围

如果您不指定范围,EXPORT_CATALOG 将导出所有对象。您可以将导出操作的范围设置为以下级别之一:

导出表对象

使用 TABLES 范围生成一个脚本,该脚本重新创建所有表及其依赖的对象(架构、序列、约束和访问策略):

=> SELECT EXPORT_CATALOG (
     '/home/dbadmin/xtest/sql_cat_tables.sql',
     'TABLES');
           EXPORT_CATALOG
-------------------------------------
 Catalog data exported successfully
(1 row)

SQL 脚本可以包含以下语句:

  • CREATE SCHEMA

  • CREATE TABLE

  • ALTER TABLE(约束)

  • CREATE SEQUENCE

  • CREATE ACCESS POLICY

  • 创建过程(存储过程)

导出所有编录对象

使用 DESIGN 范围可按依赖关系顺序导出源数据库的所有设计元素。此范围导出所有编录对象,包括架构、表、约束、投影、视图和访问策略。

=> SELECT EXPORT_CATALOG(
     '/home/dbadmin/xtest/sql_cat_design.sql',
     'DESIGN' );
           EXPORT_CATALOG
-------------------------------------
 Catalog data exported successfully
(1 row)

SQL 脚本包含重新创建数据库所需的语句:

  • CREATE SCHEMA

  • CREATE TABLE

  • ALTER TABLE(约束)

  • CREATE VIEW

  • CREATE SEQUENCE

  • CREATE ACCESS

  • CREATE PROJECTION(使用 ORDER BY 和 SEGMENTED BY)

投影注意事项

如果要导出的投影是在未使用 ORDER BY 子句的情况下创建的,SQL 脚本会反映投影的默认行为。Vertica 使用基于投影定义中的 SELECT 列的排序顺序隐式创建投影。

只要所有投影都是使用 UNSEGMENTED ALL NODES 或 SEGMENTED ALL NODES 生成的,EXPORT_CATALOG 脚本便可转移。

另请参阅