导出编录
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 脚本便可转移。