如何在 HSQLDB 导出命令中启用转义?

Posted

技术标签:

【中文标题】如何在 HSQLDB 导出命令中启用转义?【英文标题】:How to enable escaping in the HSQLDB export command? 【发布时间】:2011-11-17 15:53:18 【问题描述】:

当我使用命令java -jar sqltool.jar --rcFile sqltool.rc db_file q.sql 在 HSQLDB 2.2.5 中运行以下脚本时,我收到以下错误消息:

错误信息:

SEVERE  Error at 'q3.sql' line 16:
"\xq SELECT "T1"."C1", "T1"."C2" FROM "PUBLIC"."TABLE1" "T1""
Export syntax:  "\x table_or_view_name "  OR  "\x SELECT statement".
(Do not end with ';', since the \x command itself is not SQL).
SEVERE  Rolling back SQL transaction.
org.hsqldb.cmdline.SqlTool$SqlToolException

HSQLDB 脚本:

--q.sql
DROP TABLE "PUBLIC"."TABLE1" IF EXISTS;

CREATE TABLE "PUBLIC"."TABLE1" (
  "C1" VARCHAR(10),
  "C2" VARCHAR(10),
  "C3" VARCHAR(10)
);

INSERT INTO "PUBLIC"."TABLE1" ("C1", "C2", "C3") VALUES (',', 'b', 'c');
INSERT INTO "PUBLIC"."TABLE1" ("C1", "C2", "C3") VALUES ('d', 'e', 'f');

* *DSV_COL_DELIM=,
* *DSV_ROW_DELIM=\n
* *DSV_TARGET_FILE=results.csv

\xq SELECT "T1"."C1", "T1"."C2" FROM "PUBLIC"."TABLE1" "T1"

请注意,如果我使用\x 而不是\xq,上述HSQLDB 脚本将成功运行。但是,\x 命令不会从数据中转义“,”字符。但是,根据HSQLDB manual,\xq 应该在输入中转义分隔符。

如何将我的 HSQLDB 表导出到 CSV 文件,以便在需要时转义分隔符?

【问题讨论】:

【参考方案1】:

正如错误消息所说,它期待“\x something”,而不是“\xq something”。

您应该使用您正在使用的发行版中的实用程序指南。网站上的文档适用于 2.2.6。抱歉,在线文档太超前了,因为 2.2.6 尚未公开发布。

2.2.5 不支持\xq。

【讨论】:

我从 hsqldb.org/support/hsqldb_16.zip 获得了 HSQLDB 2.2.6 的预发布快照,它成功运行了我的脚本。谢谢!

以上是关于如何在 HSQLDB 导出命令中启用转义?的主要内容,如果未能解决你的问题,请参考以下文章

如何启用 HSQLDB 管理器工具菜单,因为它已被禁用

使用UTF-8编码导出HSQLDB数据库

Hsqldb-进程崩溃时数据如何持久化

如何在 Twitter Bootstrap 模式中启用转义键关闭功能?

如何使用 Hibernate 加载 HSQLDB 脚本

hsqldb单引号字符