• 金仓数据库 KingbaseES 插件参考手册(17. dbms_metadata)


    17. dbms_metadata

    17.1. 插件dbms_metadata简介

    DBMS_METADATA包是Kingbase数据库中提供的从数据库字典中以XML或者DDL语句形式检索元数据的一系列函数。

    使用时需要create extension dbms_metadata,不需要时drop extension dbms_metadata即可。

    • 插件名为 dbms_metadata

    • 插件版本 V1.0

    17.2. 插件dbms_metadata加载方式

    CREATE EXTENSION dbms_metadata;
    

    17.3. 插件dbms_metadata的参数配置

    无需配置任何参数。

    17.4. 插件dbms_metadata使用方法

    17.4.1. DBMS_METADATA.GET_DDL

    功能

    KingbaseES兼容ORACLE的DBMS_METADATA.GET_DDL()函数。该函数用于创建特定类型对象的DDL语句。

    目前可支持获取以下类型对象的DDL

    • TABLE

    • VIEW

    • INDEX

    • FUNCTION

    • PROCEDURE

    • TRIGGER

    • SEQUENCE

    • DBLINK

    • SYNONYM

    语法格式

    使用该函数前需要先创建DBMS_METADATA扩展。

    DBMS_METADATA.GET_DDL(
             OBJTYPE VARCHAR2(63),
             OBJNAME VARCHAR2(63),
             SCHEMA VARCHAR2(63) DEFAULT NULL,
             VERSION VARCHAR2(63) DEFAULT NULL,
             MODEL VARCHAR2(63) DEFAULT NULL,
             TRANSFORM VARCHAR2(63) DEFAULT NULL);
    

    参数说明

    表 17.4.1 DBMS_METADATA.GET_DDL参数

    参数名称

    描述

    OBJTYPE

    指定对象的数据类型

    OBJNAME

    指定对象名

    SCHEMA

    指定对象的模式名,默认值是NULL

    VERSION

    指定元数据的版本,默认值是NULL

    MODEL

    指定要使用的对象的模型,默认值是NULL

    TRANSFORM

    指定输出转换的名称,默认值是NULL

    注意

    1. VERSION,MODEL,TRANSFORM这三个参数值在目前的KingbaseES中暂时不做处理。

    2. 参数内容大小写不敏感。

    返回值类型

    以TEXT返回指定对象的DDL语句。暂不支持指定输出转换类型。

    1. 对于TABLE类型的对象,该函数的返回值包含以下内容

      • SCHEMA名;

      • TABLE名;

      • 列名,列的数据类型,默认值,约束;

      • FOREIGN KEY;(如果存在)

      • PARTITION类型和字段;(如果存在)

    2. 返回TEXT内容全为大写。

    权限

    DBA创建DBMS_METADATA扩展后,允许其他用户执行该扩展下的GET_DDL函数,暂不支持跨模式调用。

    示例

    --TABLE
    CREATE TABLE test_tab1(
        a smallserial,
        b int,
        c text,
        d text default 'KB',
        e text
    ) PARTITION BY HASH(a,c,e);
    SELECT dbms_metadata.get_ddl('table', 'test_tab1');
                 get_ddl
    ---------------------------------
     CREATE TABLE PUBLIC.TEST_TAB1( +
      A SMALLSERIAL NOT NULL,       +
      B INTEGER,                    +
      C TEXT,                       +
      D TEXT DEFAULT 'KB'::TEXT,    +
      E TEXT                        +
     )                              +
     PARTITION BY HASH (A, C, E)    +
    
    (1 row)
    
    --FUNCTION
    CREATE FUNCTION test_func1(text, pg_catalog.date) RETURNS bool LANGUAGE 'sql'
    AS 'SELECT $1 = ''abcd'' AND $2 > ''2001-01-01''';
    SELECT dbms_metadata.get_ddl('FUNCTION', 'TEST_FUNC1');
                                   get_ddl
    ---------------------------------------------------------------------
     CREATE OR REPLACE FUNCTION PUBLIC.TEST_FUNC1(TEXT, PG_CATALOG.DATE)+
      RETURNS BOOLEAN                                                   +
      LANGUAGE SQL                                                      +
     AS $FUNCTION$SELECT $1 = 'ABCD' AND $2 > '2001-01-01'$FUNCTION$    +
    (1 row)
    
    --INDEX
    CREATE TABLE test_tab5(a varchar(32), b varchar(32));
    CREATE INDEX idx5 ON test_tab5((a||' '||b));
    SELECT dbms_metadata.get_ddl('INDEX', 'idx5');
                                                get_ddl
    --------------------------------------------------------------------------------------    ---------
     CREATE INDEX IDX5 ON PUBLIC.TEST_TAB5 USING BTREE (((((A)::TEXT || ' '::TEXT) || (B)    ::TEXT)))+
    (1 row)
    

    17.5. 插件dbms_metadata卸载方法

    DROP EXTENSION dbms_metadata;
    

    17.6. 插件dbms_metadata升级方法

    ALTER EXTENSION dbms_metadata UPDATE;
  • 相关阅读:
    《Kubernetes部署篇:Ubuntu20.04基于二进制安装安装cri-containerd-cni》
    29.9.3 使用mysql命令导出数据
    RabbitMQ初步到精通系列目录
    直接用docker-compose.yml 运行springboot项目 和vue项目 容器化部署
    mysql添加字段和调整字段顺序(图文详解)
    手机流量卡经营商城小程序的作用是什么
    分布式数据服务总结v1.0
    STM32使用HAL库驱动DS18B20
    鲲鹏devkit训练营——《锁长期等待》项目解析
    8.4 数据结构——选择排序
  • 原文地址:https://blog.csdn.net/arthemis_14/article/details/126510431