HSQLDB 和 SQuirreL 中的批量删除

Posted

技术标签:

【中文标题】HSQLDB 和 SQuirreL 中的批量删除【英文标题】:Batch delete in HSQLDB and SQuirreL 【发布时间】:2016-08-29 19:31:09 【问题描述】:

我正在尝试创建一个 sql 语句来删除与某个条件匹配 1000 的记录,但是我尝试的一切都不起作用。例如我尝试过

DECLARE @count int
SET @count = 1000
    DELETE  FROM HISTORY 
    WHERE HISTORYID IN (
        SELECT TOP (@count) HISTORYID
        FROM HISTORY
        WHERE HISTTYPE = 14
    )

但是DECLARE 在 HSQLDB 中不起作用。请有人给我一些关于如何通过 SQL 实现这一点的建议,不想从 java 端这样做。

原因很简单,我在尝试删除 150k 记录时出现堆错误,所以我想将删除分成更小的部分。

【问题讨论】:

【参考方案1】:

As documented in the manual HyperSQL 支持LIMIT 语句用于DELETE

所以只要运行这个直到没有行被删除:

DELETE FROM HISTORY
WHERE HISTTYPE = 14
LIMIT 1000;

不要忘记提交或在自动提交模式下运行

【讨论】:

不是我想要达到的目标。我知道LIMIT,我可以用rownum 实现同样的效果。我正在尝试在 HSQLDB 中创建一个循环,因此我不必手动运行该语句 100 次甚至 1000 次。

以上是关于HSQLDB 和 SQuirreL 中的批量删除的主要内容,如果未能解决你的问题,请参考以下文章

Squirrel 客户端与 SAP Hybris

hsqldb 查看 test.script 文件中的数据

如何使用 JDBC 工具访问 hsqldb 数据库?

HSQLDB 删除所有数据和配置文件

如何删除 hsqldb 中的默认数据库/模式

如何用批处理命令删除一批文件中的空格字符.