如何插入非常长的文本100000 <length(string) < 300000
oracle clob或blob?
DECLARE
v_long_text CLOB;
BEGIN
v_long_text := 'my long string text';
INSERT INTO MYTABLE_NAME
VALUES (v_long_text);
END;
其metod无效,返回错误PLS-00172: string literal too long
答案 0 :(得分:1)
您的文字是隐式的varchar,因此您无法将 v_long_text 值分配给大于varchar的最大文字值(plsql中的最大varchar长度为32767)。
您可以使用连接:
protected override SizeRequest OnMeasure(double widthConstraint, double heightConstraint)
{
Scale = MIN_SCALE;
Content.TranslationX = Content.TranslationY = 0;
Content.AnchorX = Content.AnchorY = 0.5;
return base.OnMeasure(widthConstraint, heightConstraint);
}
当然,我假设MYTABLE_NAME列类型是CLOB
<强>更新强> 示例代码:
DBMS_LOB.APPEND(v_long_text, 'very long string');
DBMS_LOB.APPEND(v_long_text, 'yet another long string');
答案 1 :(得分:0)
其他方法都很好。但是,如果您将长字符串存储在文件系统中的某个位置,则可以使用这些内容。
SQL* loader
加载它:这很简单明了
可自动读取文件系统。split
选项的unix -b
实用程序拆分长文本
将文件分成较小的块(比如32000或4000)并放在shell中
script构造多个insert语句。类似的东西:
split -b 4000 yourbigfile split_files_
ct=1
for chunk in $(cat split_files_??)
do
# first time
echo "INSERT INTO table_name(col_name) VALUES ('${chunk}');"
# 2nd and subsequent
echo " update table_name set col_name = col_name || '$chunk';"
ct=$((ct + 1))
done >yourinsert_script.sql
UTL_FILE
并插入表格。答案 2 :(得分:0)
DECLARE
definition_clob CLOB;
BEGIN
dbms_lob.createtemporary(definition_clob, true);
dbms_lob.append(definition_clob,'String 1.. ">
dbms_lob.append(definition_clob,'String 2.. ">
.
.
.
INSERT INTO TABLE
(CLOB_COLUMN)
VALUES
(definition_clob)
COMMIT
dbms_lob.freetemporary(definition_clob);
END;
/