【发布时间】:2015-11-19 06:48:50
【问题描述】:
我对数据库中的表具有读取权限,并且我想获取关系模式。在 Sqlite3 中,我知道你可以做 .schema 。但是,我想知道 OracleDB 中的等价物是什么。似乎很难找到,因为他们已经改变了模式这个词的用途。
【问题讨论】:
-
对于我们这些不了解 SQLite 的人:
.schema的作用是什么? “获取关系模式”到底是什么意思?
我对数据库中的表具有读取权限,并且我想获取关系模式。在 Sqlite3 中,我知道你可以做 .schema 。但是,我想知道 OracleDB 中的等价物是什么。似乎很难找到,因为他们已经改变了模式这个词的用途。
【问题讨论】:
.schema 的作用是什么? “获取关系模式”到底是什么意思?
据我所知SQLite link
.schema ?TABLE?显示 CREATE 语句 如果指定了 TABLE,则只显示匹配的表 LIKE 模式表。
要获取 Oracle 对象的 DDL/create 语句,您需要使用包 DBMS_METADATA
示例:获取当前架构中所有完整表的 DDL, 过滤掉嵌套表和溢出段
--create test table
create table my_test_table(col1 varchar(50));
--get DDL
SELECT table_name, DBMS_METADATA.GET_DDL('TABLE',u.table_name)
FROM USER_ALL_TABLES u
WHERE u.nested='NO'
AND (u.iot_type is null or u.iot_type='IOT');
--query result
TABLE_NAME DBMS_METADATA.GET_DDL('TABLE',
1 MY_TEST_TABLE <CLOB>
--DDL for MY_TEST_TABLE will be
CREATE TABLE "TESTUSER"."MY_TEST_TABLE"
( "COL1" VARCHAR2(50)
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS"
【讨论】: