2

我正在尝试在远程服务器上使用 sqlcl 来检索给定 oracle 数据库中表的表定义。
因为我必须在那里使用 cli,所以我不能简单地使用 SQLDeveloper 并从那里获取表定义(不能从服务器外部连接到 DB)。

这个想法是使用

select dbms_metadata.get_ddl('TABLE', table_name)
from user_tables where table_name = 'RESULTS';

为了获得我需要的表的表 DDL。
但是,当我在 sqlcl 工具中运行此查询时,输出如下所示:

 CREATE TABLE "AP29_QUDB"."RESULTS" 
 (  "LOCATION_RESULT_UID" RAW(16) NOT NU

就是这样,没有更多的信息。

有人知道我如何显示该查询的完整结果吗?
(或者只是将它通过管道传输到一个文件中,以便我将其复制出来)

非常感谢
- 蒂姆

4

1 回答 1

2

看起来 sqlcl从 SQL*Plus复制了LONG设置。默认情况下,它只显示 CLOB 的前 80 个字符。可以使用 更改该大小set long [some large number]'

SQL> select dbms_metadata.get_ddl('TABLE', 'DUAL', 'SYS') from dual;

DBMS_METADATA.GET_DDL('TABLE','DUAL','SYS')
--------------------------------------------------------------------------------

  CREATE TABLE "SYS"."DUAL" SHARING=METADATA
   (    "DUMMY" VARCHAR2(1)
   ) PCT


SQL> set long 10000000
SQL> /

DBMS_METADATA.GET_DDL('TABLE','DUAL','SYS')
--------------------------------------------------------------------------------

  CREATE TABLE "SYS"."DUAL" SHARING=METADATA
   (    "DUMMY" VARCHAR2(1)
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
 NOCOMPRESS LOGGING
  STORAGE(INITIAL 16384 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM"


SQL>
于 2017-11-17T04:33:23.473 回答