【干货分享】DM数据库获取表结构和对象定义方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【干货分享】DM数据库获取表结构和对象定义方法

很多新手在开始使用DM数据库时,都问过如何获取表结构信息的问题,今日我整理了获取表结构的各种方法,也可以从这些方法中获取其他对象的定义信息,比如表、视图、存储过程、函数、包等DDL创建语句,供大家参考。

本章介绍DM数据库获取表结构方法。

本章的测试环境:

①操作系统: Window 10 (64位)

②数据库版本:DM8

相关关键字:DM数据库对象定义语句表结构

DM数据库获取对象定义信息

下面从系统包、系统过程、数据字典、DI SQL窗口和客户端管理工具等方面介绍获取表结构、视图和其他对象定义的方法。

1 使用DBMS_META系统包

DBMS_META系统包兼容Oracle功能,其GET_DDL函数用于获取数据库对表、视图、索引、全文索引、存储过程、函数、包、序列、同义词、约束、触发器等定义的DDL语句。语法如下:

FUNCTION GET_DDL(

OBJECT_TYPE IN V ARCHAR(30),

NAME IN V ARCHAR(128),

SCHNAME IN V ARCHAR(128) DEFAULT NULL

) RETURN CLOB

参数详解

OBJECT_TYPE 对象类型。包括表、视图、物化视图、索引、全文索引、存储过程、函数、包、目录等,具体可参考《DM8系统包使用手册》。OBJECT_TYPE只能为大写。

NAME 对象名称,区分大小写。

SCHEMA 模式,默认是当前用户模式。

①获取表定义语句

select dbms_metadata.get_ddl(OBJECT_TYPE => 'TABLE',

NAME=>upper('EMPLOYEE'), SCHNAME => 'DMHR');

结果展示如下,从结果中可查看表及相关主键、外键、唯一性约束等相关定义:

②获取函数/存储过程定义语句

执行如下命令查询DMHR用户下存储过程P_EXPORTDATA的定义语句:

select dbms_metadata.get_ddl(OBJECT_TYPE => 'PROCEDURE',

NAME=UPPER('P_EXPORTDATA'),SCHNAME='DMHR');

在DI SQL窗口下执行时需注意返回的字符串过长会被截断,需设置long属性值较大。

如下是DI SQL窗口执行参考结果(也可在管理工具查询窗口执行):

③获取包定义语句

执行如下命令查询SYSJOB用户下系统包DBMS_JOB的定义语句:

select dbms_metadata.get_ddl(OBJECT_TYPE => 'PACKAGE', NAME

=>upper('DBMS_JOB'), SCHNAME => 'SYSJOB');

如下是在管理工具查询窗口的执行结果,点击【另存为】可以保存为文本文件,方便阅

读。

2 使用SP_TABLEDEF、SP_VIEWDEF系统过程

DM数据库提供SP_TABLEDEF、SP_VIEWDEF系统过程可查看表和视图的DDL创建语句。

①查询表定义SP_TABLEDEF

SP_TABLEDEF以结果集的形式返回表的定义。语法如下:

void SP_TABLEDEF (

schname varchar(128),

tablename varchar(128)

)

参数说明

schname:模式名

tablename:表名

如使用DMHR用户查询其当前用户下EMPLOYEE表结构,执行命令如下:

call sp_tabledef(user, 'EMPLOYEE');

DISQL窗口下展示结果如下,可以看到表字段较多时会多行展示,格式不整体,视觉

上看起来不方便,不推荐此方法。

②查询视图定义语句SP_VIEWDEF

SP_VIEWDEF以结果集的形式返回视图的定义,语法如下:

void SP_VIEWDEF (

schname varchar(128),

viewname varchar(128)

)

参数说明

schname:模式名

viewname:视图名

如查询SYS用户下ALL_ALL_TABLES视图定义,执行如下命令:

call sp_viewdef('SYS','ALL_ALL_TABLES');;

在管理工具查询窗口执行结果展示如下,可以看出,视图定义过长时(字符串超过32767),记录会拆分多行展示,查看数据选择【另存为】可以保存为文本格式,但每行数据要单独保存,视图定义较长时不方便。也可在DISQL下执行,格式不整体,不推荐此方法。

3 使用数据字典

DM数据库提供兼容大部分Oracle功能的系统数据字典,包含DBA_TABLES、DBA_TAB_COLUMNS、DBA_VIEWS、DBA_SOURCE等数据字典,方便用户查询表结构、视图、对象定义等相关信息。

①查询表/视图字段信息

USER_TAB_COLUMNS/ALL_TAB_COLUMNS/DBA_TAB_COLUMNS DBA_TAB_COLUMNS 显示数据库中所有表、视图或聚簇的列。表字段定义略。

ALL_TAB_COLUMNS 显示当前用户能够访问的表、视图或聚簇的列。表结构同DBA_TAB_COLUMNS。

USER_TAB_COLUMNS 显示当前用户所拥有的表、视图或聚簇的列。

如使用DMHR用户查询其当前用户下EMPLOYEE表结构,查询SQL如参考如下: select t.column_name, t.data_type, t.data_length, t.nullable

from user_tab_columns t

where table_name='EMPLOYEE';

执行结果参考如下:

②查询视图定义信息USER_VIEWS/ALL_VIEWS/DBA_VIEWS

DBA_VIEWS 显示数据库中所有的视图。其TEXT字段为TEXT类型,保存视图的DDL 定义语句。

ALL_VIEWS 显示当前用户能够访问的所有视图,结构同DBA_VIEWS。

USER_VIEWS 显示当前用户所拥有的所有视图,结构同DBA_VIEWS,没有OWNER 列。

如查询USER_VIEWS视图的定义信息,sql语句如下:

select t.owner, t.view_name, t.text_length, t.text

from dba_views t

where t.view_name = upper('user_views');

语句结果展示如下(也可在管理工具查询窗口执行),注意这里TEXT内容是视图定义语句,如果是查询字段信息,可使用上述方法①。

相关文档
最新文档