java - hsql CLOB 列是否有大小限制以及如何配置它

标签 java database-schema hsqldb clob

我有一个带有 CLOB 列的 HSQL 表。我使用 HSQL 2.2.8 作为测试用例的内存数据库。我试图从一个文本文件中插入一个 41.169 字节的数据条目,但我总是收到一个异常,告诉我“字符串数据,右截断”,我认为该条目太大而无法插入并因此被截断。所以我尝试插入较小的数据条目,效果非常好,但最后我真的需要能够插入大条目。

该表是使用以下 SQL 命令创建的:

CREATE TABLE documents (
identifier VARCHAR(255) NOT NULL,
documentdata CLOB,
PRIMARY KEY(identifier)
);

我正在尝试使用以下 SQL 命令插入数据:

MERGE INTO documents 
USING (VALUES(:identifier,:documentdata)) 
AS vals(identifier,documentdata) 
ON documents.identifier=vals.identifier 
WHEN NOT MATCHED THEN INSERT VALUES vals.identifier, vals.documentdata;

在此查询中,:identifier 和 :documentdata 被相应的值替换。

所以我的问题是。我可能在某处配置的 HSQL 中的 CLOB 条目的大小是否有一些限制。我无法理解该错误,因为我认为 CLOB 允许我保存任意大小的数据条目。

最佳答案

这不是插入具有大 CLOB 或 BLOB 列的表的正确方法。将以下语句与 PreparedStatement 一起使用,然后将 CLOB 设置为字符流或字符串。

MERGE INTO documents 
USING (VALUES(CAST(? AS VARCHAR(255)),CAST(? AS CLOB)))
AS vals(identifier,documentdata) 
ON documents.identifier=vals.identifier 
WHEN NOT MATCHED THEN INSERT VALUES vals.identifier, vals.documentdata;

关于java - hsql CLOB 列是否有大小限制以及如何配置它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11156947/

相关文章:

java - 被 Deitel 如何编程第 9 章中的哨兵控制重复逻辑所困扰。问 4.18

java - 在java中编写文本文件的相对路径

mysql - 极慢的MySQL性能

database - Grails 应用程序的每个 cloudfoundry 部署都丢失了数据库数据

java - 在集成测试之间以编程方式重置 Hibernate 数据库

java - 对 2 个或更多大量结果集进行排序?

java - Css 菜单在 javascript 上变得透明

schema - 在 Google Bigquery 中,NULL 字段会占用空间吗?

Mysql Datatype - Enum or not to Enum, Enum 可以为空吗?

java - Spring:HSQL-无法执行数据库脚本