如何将超过4000个字符插入到CLOB类型的列中?
--create test table s
create table s
(
a clob
);
insert into s values('>4000 char')
出现错误:
ORA-01704:字符串太长。
我想一次插入一个超过4000个字符的字符串。怎么办?这可能吗?
当我阅读 Oracle 参考时,CLOB
可以保存最大4GB(千兆字节)?
以下是一个示例:
insert into <table> (clob_column)
values
(
to_clob(' <=4000 symbols ')
||to_clob(' <=4000 symbols ')
||to_clob(' <=4000 symbols ')
...
||to_clob(' <=4000 symbols ')
);
一次插入的最大字符数为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;
使用列并使用sqlldr
从csv导入数据。
sqldeveloper
可以为您生成必要的control
.ctl
脚本。