如何在HSQLDB中使用多行SELECT语句导出数据?

如何在HSQLDB中使用多行SELECT语句导出数据?,sql,database,hsqldb,Sql,Database,Hsqldb,当我在HSQLDB2.2.5中使用命令“java-jar sqltool.jar--rcFile sqltool.rc db_file q.sql”运行以下脚本时,我得到错误消息:“用户缺少权限或找不到对象:选择”。如果我将\x命令设置为单行语句,HSQLDB将成功执行脚本。我想把我的\x分成多行,以提高可读性。如何在HSQLDB脚本中使用多行\x命令 --q.sql DROP TABLE "PUBLIC"."TABLE1" IF EXISTS; CREATE TABLE "PUBLIC"."

当我在HSQLDB2.2.5中使用命令“java-jar sqltool.jar--rcFile sqltool.rc db_file q.sql”运行以下脚本时,我得到错误消息:“用户缺少权限或找不到对象:选择”。如果我将
\x
命令设置为单行语句,HSQLDB将成功执行脚本。我想把我的
\x
分成多行,以提高可读性。如何在HSQLDB脚本中使用多行
\x
命令

--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 ('a', 'b', 'c');
INSERT INTO "PUBLIC"."TABLE1" ("C1", "C2", "C3") VALUES ('d', 'e', 'f');

DROP TABLE "PUBLIC"."TABLE2" IF EXISTS;

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

INSERT INTO "PUBLIC"."TABLE2" ("C1", "C2") VALUES ('a', 'b');
INSERT INTO "PUBLIC"."TABLE2" ("C1", "C2") VALUES ('u', 'v');

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

\x SELECT
( SELECT TOP 1 "T2"."C1" FROM "PUBLIC"."TABLE2" "T2" WHERE "T2"."C1" = "T1"."C1") AS "T2C1",
"T1"."C2" AS "T1C2"
FROM "PUBLIC"."TABLE1" "T1"
ORDER BY "T2C1", "T1C2"
更新:根据@Blaine的建议,我切换到HSQLDB 2.2.6,并将上述脚本中的
\x
命令替换为以下命令:

\.

SELECT
(SELECT TOP 1 "T2"."C1" FROM "PUBLIC"."TABLE2" "T2"
 WHERE "T2"."C1" = "T1"."C1") AS "T2C1",
"T1"."C2" AS "T1C2"
FROM "PUBLIC"."TABLE1" "T1"
ORDER BY "T2C1", "T1C2"

.;

\x :

这需要版本2.2.6

一旦你有了2.2.6,
\x?
将向你展示你需要知道的一切


由于您希望从脚本执行此操作,因此可以使用原始模式将多行SQL语句输入SqlTool的命令缓冲区,然后使用
\x:
。助记符:“:”表示SqlTool的编辑缓冲区。

我从中获取了2.2.6的预发布快照,并在脚本中将“\x选择”替换为“\x:SELECT”。但是,我收到了错误消息:“意外令牌:”。我需要做任何其他更改吗?HyperSQL 2.2.6现在是公开的。您可以从Sourceforge下载zip。请参阅,以获取可满足您需要的工作示例。我编辑了您的答案,以包含在HSQLDB 2.2.6中成功运行的命令。由于我的编辑被拒绝(请参阅),我编辑了我的问题。