使用sqlplus检索大型Clob数据

Ami*_*aka 3 oracle sqlplus clob

如何使用sqlplus到stdout从表中完全检索大型Clob数据?有一种方法可以使用特定于语言的数据库API来完全获得它。但是当我尝试使用纯sqlplus来获取它时,我遇到了一些问题,例如,

  • 输出缓冲区太小(最大4000)
  • 字符串缓冲区太小

由于oracle clob字段可以包含4GB(最大)数据,因此,有没有使用sqlplus获取完整数据块的正确方法?我可以下载为文件吗?

我希望这个问题是明确的。我更愿意在不向数据库注入PL / SQL过程的情况下做到这一点。

Ark*_*icz 5

1)第一张桌子和衣柜。

create table large_clob(a clob);
insert into large_clob values( dbms_xmlgen.getXml('select * from dba_objects'));
Run Code Online (Sandbox Code Playgroud)

2)在sqlplus中运行代码

set linesize 32767 long 2000000000 longchunksize 32767 PAGESIZE 0 FEEDBACK OFF ECHO OFF TERMOUT OFF
Spool output_file.txt
  select a from large_clob;
spool off
Run Code Online (Sandbox Code Playgroud)

所有变量的描述在这里

  • long 2000000000-指定要检索的CLOB字节数。(最大2GB)
  • linesize线的大小(最大为32k)。线的大小。如果行超出大小,则该行将换行到下一行
  • longchunksize 32k -将分块检索块,块大小为32k
  • PAGESIZE 0 -违约结果页面fomrationg
  • FEEDBACK,ECHO,TERMOUT -禁用所有这些。
  • Spool 将输出重定向到output_file.txt