oracle 查看建表语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 查看建表语句相关的知识,希望对你有一定的参考价值。

dbms_metadata.get_ddl(object_type => 'TABLE',name => table_name)

这个语句我会用,但是这个查询出来的create语句有些问题,一是不包含约束,二十多了什么附件信息,比如storage compress等。例子如下:
CREATE TABLE "abc"."AR_TMP"
( "COD_FN_ENT" CHAR(4 CHAR),
"NUM_SEQ_AR" CHAR(17 CHAR) ,
"ID_SP" CHAR(3 CHAR) ,
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS NOLOGGING
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 "CRS_DATA"

我在aqua data studio里在表上右击可以查询到如下的sql,
CREATE TABLE BDPDCUSER.AR_TMP (
COD_FN_ENT CHAR(4 CHAR) NOT NULL,
NUM_SEQ_AR CHAR(17 CHAR) NOT NULL,
ID_SP CHAR(3 CHAR) NOT NULL,
)
这个包含了null等约束,而且没有附件信息,如果过想获取这个sql,该怎么用sql语句来实现呢?谢谢。
not null 确实显示,但是null不显示。我现在想着用shell脚本加工,但是也有个小问题。
dbms_metadata.get_ddl
本来直接执行输出是这样的
CREATE TABLE "abc"."AR_TMP"
( "COD_FN_ENT" CHAR(4 CHAR),
"NUM_SEQ_AR" CHAR(17 CHAR) ,
"ID_SP" CHAR(3 CHAR) ,
)
但是在shell执行是输出这样的
CREATE TABLE "abc"."AR_TMP"
( "COD_FN_ENT" CHAR(4 CHAR),
"NUM_SEQ_AR" CHAR(17
CHAR) ,
"ID_SP" CHAR(3 CHAR) ,
)
您知道怎么回事吗?谢谢。

参考技术A 在sqlplus中执行以下命令:

set line 200 pages 50000 wrap on long 999999 serveroutput on

EXECUTEDBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);---去除storage等多余参数

select dbms_metadata.get_ddl('TABLE', 表名) from dual;追问

谢谢,不过也没有加上 NULL NOT NULL等限制,AQ右键菜单应该也是执行某条或某些命令吧?您知道吗?

追答

我在本地试过,会显示not null的喔。没有用过AQ,但是这些IDE应该都是调用数据库的命令或函数的。

追问

您知道怎么回事吗?谢谢。这里写了超长,所以补充问题。

追答

您是指“AQ右键菜单应该也是执行某条或某些命令吧?”吗?这个就不太清楚啦。

本回答被提问者采纳

oracle数据库

1.按某个字段的值(某个值)排序

order by decode('字段名称',‘固定值’,1);


2.修改字段的值可以为空

alter table 表名 modify 字段名称 null;


3.查看某个表的建表语句

找到需要查看建表语句的表,右键,然后点击DBMS_元数据->DDL查看建表语句


以上是关于oracle 查看建表语句的主要内容,如果未能解决你的问题,请参考以下文章

oracle 建表语句

Oracle数据库建表语句连续执行的问题

oracle ddl语句用啥编辑

如何生成hive的建表语句

oracle建表语句

如何获取hive建表语句