存储JSON的Oracle CLOB替代方案

存储JSON的Oracle CLOB替代方案,json,oracle,clob,varchar2,Json,Oracle,Clob,Varchar2,除了Oracle 10g中的CLOB之外,是否还有其他方法可以存储大量数据? 我需要在这个字段中存储的JSON文件的最大大小是150Kb。我可以为此使用VARCHAR2或NTEXT吗?如果需要避免使用CLOB,JSON文件的内容也可以作为文本复制。 提前感谢您的帮助。在10g中,VARCHAR2或NVARCHAR2列的最大大小仅为4kb。在12c下,如果将MAX\u STRING\u SIZE服务器属性设置为EXTENDED,则此限制将被取消,但仍远未接近150kb 您需要使用CLOB,或者将1

除了Oracle 10g中的
CLOB
之外,是否还有其他方法可以存储大量数据? 我需要在这个字段中存储的JSON文件的最大大小是150Kb。我可以为此使用
VARCHAR2
NTEXT
吗?如果需要避免使用
CLOB
,JSON文件的内容也可以作为文本复制。
提前感谢您的帮助。

在10g中,
VARCHAR2
NVARCHAR2
列的最大大小仅为4kb。在12c下,如果将
MAX\u STRING\u SIZE
服务器属性设置为
EXTENDED
,则此限制将被取消,但仍远未接近150kb

您需要使用
CLOB
,或者将150kb分解为4kb块

分解数据的一个选项是将数据存储在表中,其中每行表示文件的一行:

file_id     line_id     line_data
---------------------------------
1           1           this
1           2           is
1           3           where
1           4           your
1           5           data
1           6           lives

或者,如果您可以升级到12c,您可以利用。

是否有不想使用CLOB的原因?不,没有其他选择。
varchar
的最大大小为4k,因此不能使用该值<如果您想存储更多,code>CLOB是您唯一的选择。在12.1.0.2中,您还可以使用新的
json
数据类型(注意.0.2这在12.1.0.1中不可用),我使用的是JPA和hibernate。我想以字符串形式检索此字段的内容。一团一团地把这项任务搞得一团糟。这一过程已经持续了好几天,并且在上得到了类似这样的问题的答案:这对于像我这样的新手来说仍然没有用。我想做一些更简单的事情。所以你真正的问题是:如何在Hibernate中使用
CLOB
数据类型?任何有效的方法都可以。但是第一个问题我没有得到任何答案,这就是为什么我会选择这个问题。请分享您是否有任何问题的解决方案…最后一件事,我知道BLOB存储为二进制,但在BLOB字段中存储包含菜单详细信息的json文件是否错误。可能的后果是什么?我不太清楚-JSON不是二进制编码的,所以我不知道为什么要使用BLOB…@RBz-BLOB表示二进制数据。即使您知道它实际上是一个“字符串”,也没有人(除了您个人)知道使用了哪种编码。是ASCII、UTG-8还是EBDIC?由于数据库不知道编码方案,因此无法对其进行索引,因为它是一个字符串。例如,不能对BLOB使用全文搜索。另外,当您将字节[]转换为字符串时,Java应用程序必须知道字符集。在您的案例中,使用BLOB意味着数据库不能(也不会)关心存储在其中的内容。数据库中的JSON数据是文本的,但可以使用数据类型BLOB以及VARCHAR2或CLOB来存储文本。如果可能,Oracle建议您使用BLOB存储。特别是,这样做可以避免任何字符集转换的需要(请参阅JSON:Oracle数据库中的字符集和字符编码)。