15

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

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

导致错误:

ORA-01704: 字符串太长。

我想一次插入一个> 4000个字符的字符串。我该怎么做?可能吗?

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

4

3 回答 3

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

这是一个例子:

insert into <table> (clob_column)
  values
  (
      to_clob(' <=4000 symbols ')
    ||to_clob(' <=4000 symbols ')
    ||to_clob(' <=4000 symbols ')
    ...
    ||to_clob(' <=4000 symbols ')
  );
于 2018-03-14T13:35:40.730 回答
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;
于 2013-08-23T04:50:55.840 回答
-2

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

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

于 2019-03-07T15:10:11.393 回答