【问题标题】:Is there a size limitation to hsql CLOB columns and how to configure ithsql CLOB 列是否有大小限制以及如何配置它
【发布时间】:2012-06-24 19:07:18
【问题描述】:

我有一个带有 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 的 CREATE TABLE 语句和 JDBC 代码。
  • 感谢您的回答。请参阅上面编辑的条目。

标签: java database-schema hsqldb clob


【解决方案1】:

这不是插入具有大 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;

【讨论】:

    猜你喜欢
    • 2013-05-26
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    相关资源
    最近更新 更多