[英]How to store string length greater than 4000 char at a time in oracle clob datatype column?
[英]How do I store a string longer than 4000 characters in an Oracle Database using Java/JDBC?
我不确定如何使用Java / JDBC在Oracle数据库中插入一个很长的字符串。
我有一个字符串,该字符串大于4000个字符,可以说是6000个字符。我想将此字符串存储在Oracle数据库中。
执行此操作的方法似乎是使用CLOB数据类型。 好的,因此我将该列声明为描述CLOB。
现在,当需要实际插入数据时,我有一个准备好的语句pstmt。 看起来像pstmt = conn.prepareStatement(“INSERT INTO Table VALUES(?)”)
。
所以我想使用方法pstmt.setClob()
。 但是,我不知道如何创建一个包含String的Clob对象。 没有构造函数(大概是因为它可能比可用内存大得多)。
如何将字符串放入Clob?
请记住,我不是一个非常有经验的程序员。 请尝试使说明尽可能简单。 效率,良好做法等不是这里的问题,我只想要绝对最简单的解决方案。 如果可能的话,我想避免下载其他软件包; 现在,我仅使用JDK 1.4和标记为ojdbc14.jar
。 我环顾了一下,但无法按照我发现的任何解释进行操作。
如果您有不使用Clobs的解决方案,那么我也乐于接受,但必须是一栏。
您(至少)有两个选择:
使用connection.createClob()
创建Clob
,在其上设置数据,然后在准备好的语句上设置它。 这将适用于较小的数据
使用preparedStatement.setClob(position, reader)
-在这里您将有一个Reader
实例。
这是oracle.com上的一个示例,该示例将LOB列与Oracle和JDBC一起使用。 基本上,它将为一个空的LOB(实际上是两个,因为它同时显示BLOB和CLOB)插入一个LOB定位器,锁定该行以进行更新,然后使用BLOB和CLOB OutputStream接口将数据写入LOB。 释放“ SELECT ... FOR UPDATE”时,LOB将在数据库中刷新,并且新插入的数据将可见。
参考: http : //gogates.blogspot.com/2013/09/inserting-clob-data-which-is-more-than.html
将超过4000个字符的CLOB数据插入到Oracle表中我试图将4000+个字符的数据插入具有CLOB作为数据类型的Oracle表中,但是无法使用简单的insert语句来做到这一点。
我使用的表结构如下
CREATE TABLE ClobTest (id number, clobData clob );
表结构非常简单,一个数字和一个Clob数据类型只有两列。
现在...如果在查询下面运行,它将在没有任何错误的情况下执行
INSERT INTO ClobTest VALUES(1, 'ClobTestData');
但是,当您将数据集的长度增加到4000+时,它将不会成功。并且将出现以下错误
错误报告:SQL错误:ORA-01704:字符串文字太长01704。00000-“字符串文字太长” *原因:字符串文字长于4000个字符。 *措施:使用最多4000个字符的字符串文字。 只能使用绑定变量输入更长的值。
仔细研究此问题后,您知道,如果要将4000多个char数据插入到CLOB数据类型中,请尝试使用PL-SQL块执行此操作。
根本原因是,Oracle SQL不支持超过4000个字符的char / varchar数据类型; 但是PL-SQL这样做。
我在下面使用匿名pl-sql将4000多个字符数据插入CLOB数据类型
DECLARE
vClob VARCHAR(8000);
BEGIN
vClob := '<Charater data having 4000+ characters>';
INSERT INTO ClobTest VALUES(1, vClob);
END;
验证是否在查询中执行了4000多个字符
SELECT LENGHT(clobData) FROM ClobTest
希望对您有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.