当前位置: 首页 > 知识库问答 >
问题:

如何通过脚本在Oracle中插入超过1 Mb(1KK字符)的CLOB

谷涵容
2023-03-14

下面是我的目标表:

CREATE TABLE qon (x clob); 

下面是抛出错误的代码:

DECLARE 
    l_clob clob := '32769 chars+ '; 
BEGIN 
    FOR i IN 1..2 
    LOOP 
        INSERT INTO qon (x) VALUES (empty_clob()) --Insert an "empty clob" (not insert null) 
        RETURNING x INTO l_clob; -- Now we can append content to clob (create a 400,000 bytes clob) 
        FOR j IN 1..3 LOOP 
            dbms_lob.append(l_clob, rpad ('',4000,'')); --dbms_lob.append(l_clob, 'string chunk to be inserted (maximum 4000 characters at a time)'); 
        END LOOP; 
     END LOOP; 
END;

对不起,明天会纠正的。这个想法--不知何故插入字符串超过32767

http://www.oradev.com/dbms_lob.jsp

如何用一个字段作为CLOB编写oracle插入脚本?http://www.techonthenet.com/oracle/functions/rpad.php

如何在Oracle表中插入/更新较大的数据?

谢谢

共有1个答案

闻人英韶
2023-03-14

你似乎明白这个问题,我不知道为什么你在执行上有困难。

以下是我对您的表的版本:

create table qon
   ( id number
     , txt clob
     , len number )
/

下面是我的代码版本:

declare
    l_clob clob;
    --  4000 characters is the limit for RPAD in SQL 
    l_str  varchar2 (32767);
    n number;
begin
    l_str := rpad ('string chunk to be inserted (maximum 32767) characters at a time',32767,'+');
    dbms_lob.createtemporary (l_clob,true );
    << recordz >>
    for i in 1..2 loop 
        << appendz >>
        for j in 1..10 loop 
            dbms_lob.append (l_clob, l_str);
        end loop appendz; 
        insert into qon  
            values (i, l_clob, dbms_lob.getlength(l_clob))
            returning qon.len into n;
        dbms_output.put_line('#'||i||' length of clob = '||n);
     end loop recordz; 
     dbms_lob.freetemporary (l_clob);
end;
/
 ...
 21* end;
#1 length of clob = 327670
#2 length of clob = 655340

PL/SQL procedure successfully completed.

SQL> 
 类似资料:
  • 首先为我的英语感到抱歉。 我试图插入大约15000行,问题是有一个CLOB类型的列可能有超过4000个字符,给出错误ORA-01704,我知道如何像这样一个接一个地插入:TO_CLOB(string)TO_CLOB(string)并且它工作,但是我有大约1000个这样的情况发生,我不想手动执行,你能想到什么方法来插入它们? 谢谢你。

  • 如何向CLOB类型列插入超过4000个字符? 导致错误: ORA-01704:字符串太长。 当我阅读Oracle参考时,可以最大节省4GB(千兆字节)?

  • 问题内容: 想通过一个简单的 sql 脚本(例如填充测试数据库)将文件插入到 BLOB 字段中。我知道如何通过代码做到这一点,但我找不到如何执行 sql 脚本本身。 我试图通过路径,即 但这失败了。 在代码中(例如 java),很容易创建一个 File 对象并将其传入,但是直接从 sql 脚本中,我被卡住了...... 任何想法? 问题答案: 为了测试,您可以插入文字十六进制字节或使用该函数,如下

  • 问题内容: 我正在尝试使用H2的runscript运行sql脚本。 该表之一包含一个长文本类型,该类型存储了一个xml文档(来自SAP数据库) 因此,Insert语句包含XML的长文本(大约200行XML),虽然很难看,但仍然可以使用。 在SQL解析期间,H2因ArrayOutOfBoundException而崩溃。 插入语句接受的长度是否有限制? 在nsert中,我使用刻度(如mysql中所使用

  • 我有这样的设置: 所有.飞镖只是导入脚本1.飞镖和脚本2.dart并调用它们的主要。目标是在细节下有一堆可以单独运行的脚本。此外,我想要一个单独的 all.dart 脚本,可以一次运行所有脚本。这将使调试单个脚本更简单,但仍允许所有脚本运行。 all.dart 脚本1.飞镖 脚本2.dart 所以,这是工作,我看到运行时预期的打印语句all.dart但我有两个问题。 首先,我必须在详细信息下软链接

  • 问题内容: 如何按字符串长度过滤? 此代码段: 给了我以下错误: 在哪里: 问题答案: 您需要使用SQL函数生成器来创建函数: