不使用 dbms_metadata 从 oracle 数据库对象获取 DDL 命令
Get DDL command from oracle database objects without using dbms_metadata
我正在 oracle 数据库 中执行一个程序,它具有执行一种数据库对象清单的功能.
基本上我必须得到table类型对象的DDL。
为此,我使用来自银行本身的查询作为:
select * from user_objects;
select * from user_constraints;
select * from user_source;
我的库存必须包含以下信息:
Inventory information here.
如何在不使用函数的情况下从对象获取 DDL 命令:
dbms_metadata.get_ddl();
元数据库中没有其他现成的函数。
我有 也试过这个:
SELECT
(CASE WHEN line = 1 THEN 'create or replace ' || text ELSE text END) texto
FROM user_source
WHERE NAME = '....'
ORDER BY line
但是这个命令没有得到table个对象的ddl。
获取视图的DDL,非常简单:
SELECT VIEW_NAME, TEXT FROM ALL_VIEWS;
如果您希望它 return 只是特定视图的文本,请执行以下操作:
SELECT TEXT FROM ALL_VIEWS
WHERE VIEW_NAME LIKE '[name_of_view]';
获取 tables 的 DDL 比较麻烦,但可以通过从多个系统视图查询数据来完成:
ALL_TABLES
ALL_TAB_COLUMNS
ALL_COL_COMMENTS
ALL_CONSTRAINTS
ALL_CONS_COLUMNS
ALL_INDEXES
ALL_IND_COMMENTS
例如,如果您想获取 TABLE1 的所有列名及其数据类型,您可以这样做:
SELECT COLUMN_NAME, DATA_TYPE FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME LIKE 'TABLE1';
要获取 table 上所有约束的列表,查询是:
SELECT * FROM ALL_CONSTRAINTS
WHERE TABLE_NAME LIKE 'TABLE1';
要获得完整的 table 定义,需要对如何使用这些系统视图有相当好的理解。可以在这里找到一个非常有用的页面:6 Useful Oracle Data Dictionary Queries Every DBA Should Have
我正在 oracle 数据库 中执行一个程序,它具有执行一种数据库对象清单的功能.
基本上我必须得到table类型对象的DDL。
为此,我使用来自银行本身的查询作为:
select * from user_objects;
select * from user_constraints;
select * from user_source;
我的库存必须包含以下信息:
Inventory information here.
如何在不使用函数的情况下从对象获取 DDL 命令:
dbms_metadata.get_ddl();
元数据库中没有其他现成的函数。
我有 也试过这个:
SELECT
(CASE WHEN line = 1 THEN 'create or replace ' || text ELSE text END) texto
FROM user_source
WHERE NAME = '....'
ORDER BY line
但是这个命令没有得到table个对象的ddl。
获取视图的DDL,非常简单:
SELECT VIEW_NAME, TEXT FROM ALL_VIEWS;
如果您希望它 return 只是特定视图的文本,请执行以下操作:
SELECT TEXT FROM ALL_VIEWS
WHERE VIEW_NAME LIKE '[name_of_view]';
获取 tables 的 DDL 比较麻烦,但可以通过从多个系统视图查询数据来完成:
ALL_TABLES
ALL_TAB_COLUMNS
ALL_COL_COMMENTS
ALL_CONSTRAINTS
ALL_CONS_COLUMNS
ALL_INDEXES
ALL_IND_COMMENTS
例如,如果您想获取 TABLE1 的所有列名及其数据类型,您可以这样做:
SELECT COLUMN_NAME, DATA_TYPE FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME LIKE 'TABLE1';
要获取 table 上所有约束的列表,查询是:
SELECT * FROM ALL_CONSTRAINTS
WHERE TABLE_NAME LIKE 'TABLE1';
要获得完整的 table 定义,需要对如何使用这些系统视图有相当好的理解。可以在这里找到一个非常有用的页面:6 Useful Oracle Data Dictionary Queries Every DBA Should Have