如何使用sqlplus从表中完整检索大型clob数据到stdout?有一种方法可以完全使用特定于语言的DB API。但是当我尝试使用纯粹的sqlplus时,我遇到了一些问题,例如,
由于oracle clob字段可以包含4GB(最大)的数据,有没有正确的方法来使用sqlplus获取完整的数据块?我可以将其下载为文件吗?
我希望问题很清楚。如果我可以在不向数据库注入PL / SQL过程的情况下这样做,我更喜欢。
答案 0 :(得分:4)
1)第一张桌子和clob。
create table large_clob(a clob);
insert into large_clob values( dbms_xmlgen.getXml('select * from dba_objects'));
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
所有变量的描述均为here
long 2000000000
- 指定要检索的CLOB字节数。 (2gb是最大的)linesize
行的大小(最大32k)。线的大小。如果行超出大小,该行将被包装到下一行longchunksize 32k
- 将以块状物检索clob,块大小为32k PAGESIZE 0
- 分发结果页面fomrationg FEEDBACK,ECHO,TERMOUT
- 禁用所有这些功能。 Spool
将输出重定向到output_file.txt 答案 1 :(得分:1)
这就是我做的。但在这里,可以检索的数据仅限于VARCHAR2的最大值(32767)。
exec dbms_output.enable(32767);
它将clob数据打印为到stdout。
<强>解释强>
set serveroutput on
VARCHAR2
dbms_output.put_line()
变量并通过no_data_found
打印出来。每当有
没有数据(NSString *filePath = [[NSBundle mainBundle] pathForResource:@"DataJson" ofType:@"json"];
NSLog(@"%@",filePath);
NSURL *url = [NSURL fileURLWithPath:filePath];
NSData *jsonData = [NSData dataWithContentsOfURL:url];
NSError *error = nil;
id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:&error];
if (error == nil){
NSLog(@"#### JSON object #### %@",jsonObject);
}else{
NSLog(@"#### JSON parsing error #### %@",error);
}
异常发生),异常将是
处理并生成错误消息。