Oracle CLOB无法插入超过4000个字符?

问题描述 投票:8回答:3

如何在CLOB类型列中插入超过4000个字符?

--create test table s
create table s
(
      a clob
);
insert into s values('>4000 char')

导致错误:

ORA-01704:字符串太长了。

当我想一次插入> 4000的字符串时,该怎么办?有可能吗?

当我阅读Oracle参考资料时,CLOB可以节省最多4GB(千兆字节)?

oracle insert clob
3个回答
7
投票

一次插入的最大值为4000个字符(Oracle中的最大字符串文字)。但是你可以使用lob函数dbms_lob.append()将(最多)4000个字符的块附加到clob:

CREATE TABLE don (x clob);


DECLARE 
 l_clob clob;
BEGIN
  FOR i IN 1..10
  LOOP
    INSERT INTO don (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 i IN 1..100
    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;

7
投票
  • 将长字符串拆分为4000个字符或更少的块
  • 使用to_clob()函数为每个块创建clobs
  • 连接clobs

这是一个例子:

insert into <table> (clob_column)
  values
  (
      to_clob(' <=4000 symbols ')
    ||to_clob(' <=4000 symbols ')
    ||to_clob(' <=4000 symbols ')
    ...
    ||to_clob(' <=4000 symbols ')
  );

0
投票

使用clob列并使用sqlldr从csv导入数据。

sqldeveloper可以为您生成必要的control .ctl脚本。

© www.soinside.com 2019 - 2024. All rights reserved.