我正在尝试从旧的Oracle数据库(版本9.2)中提取类型为LONG的单元格中的内容。麻烦的是,其中一些单元格的内容超过30,000个字符,并在选择时被截断。我的DBA技能缺乏,所以我有两个问题:
是否可以将大于30,000个字符(32kb?)的内容插入LONG类型的单元格中?如果答案是否定的,请忽略我的第二个问题,因为这意味着数据必须在插入时被截断并且现在已损坏。
如果可以插入超过32kb,那么问题是如何读回所有内容?我已经尝试将LONG转换为CLOB,因为我已经读过CLOB的限制更高。我尝试了一些方法,其中一个是在Oracle中创建一个临时表,并使用TO_LOB函数将LONG单元格中的数据填充到CLOB:
首先,我创建了临时表并插入了一些我知道超过32kb的测试单元:
CREATE GLOBAL TEMPORARY TABLE temp_table(
time TIMESTAMP WITH LOCAL TIME ZONE,
text CLOB
)
ON COMMIT DELETE ROWS;
INSERT INTO temp_table (
time ,
text
)
SELECT
sysdate ,
TO_LOB(DOC_CONTENT)
FROM DOCUMENTS
WHERE DOC_ID = '123456'
AND ROWNUM <= 1;
然后我读出了生成的CLOB的长度,总是得到30,000
SELECT
gt.text
INTO
v_clob
FROM temp_table gt;
dbms_output.put_line('Size: '||dbms_lob.getlength(v_clob));
COMMIT;
END;
因此即使我尝试将LONG转换为CLOB,内容仍然被截断为30,000个字符。还有另一种方法来获得整个&#39;内容超出LONG,或者在最初插入时丢失了?感谢