【发布时间】:2015-06-13 15:02:08
【问题描述】:
如何通过脚本在 Oracle 中插入超过 1 Mb(1kk 个字符)的 CLOB 例如。使用 pl slq,可能会附加一些少于 32767 字节(字符)的部分。 绕过问题:“PLS-00172: string literal too long”。
这是我的目标表:
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
我正在搜索的网址:
Oralce CLOB can't insert beyond 4000 character?
How to query a CLOB column in Oracle
http://www.oradev.com/dbms_lob.jsp
How to write oracle insert script with one field as CLOB? http://www.techonthenet.com/oracle/functions/rpad.php
How to insert/update larger size of data in the Oracle tables?
https://www.aquaclusters.com/app/home/project/public/aquadatastudio/issue/8179
https://community.oracle.com/thread/2545044
谢谢
【问题讨论】:
-
他们为什么不帮忙?您似乎知道您需要附加 32KiB 块。字符串从哪里来?无论如何,在脚本中包含 1MiB 文字会有点笨拙。它可能来自一个单独的文件吗?
-
我想在脚本中存储一个 1MiB 的文字。大约 50 个脚本,每个脚本在每个数据库中插入一个带有一个 clob 值的行。所有这些都是为了绕过通常的插入 clob 值,基于 ui。在上面的 url 情况下,我仍然收到关于字符串太长的警告,我对 pl sql 的经验很少。谢谢
-
到目前为止,我还不清楚你在问什么。我可以建议您 edit 您的问题,以提供更多背景信息并向我们展示您的问题确切是什么/在哪里。
-
在 (PL/)SQL 脚本中不能有超过 32KiB 的单个文字。您将不得不拥有数千个较短的文字,这将是创建和维护的痛苦。为什么你不能有一个包含值的文本文件并从中加载?如果你能把它放到服务器上。您可以使用 utl_file、外部表等。目前您的要求似乎没有意义。
-
请通过编辑按钮将新信息(尤其是代码)放入问题中 - 而不是作为评论。您一次可以追加 32KiB,而不仅仅是 4KB,因为它是 Pl/SQL 上下文;但单个字符串文字不能超过 32KiB。您可以在服务器上的单独文本文件中存在 1MiB 的“字符串”吗?
标签: sql string oracle plsql insert