hsqldb sqltool rcfile 不起作用

hsqldb sqltool rcfile does not work

我可以 运行 HSQLDB 的命令行 SqlTool 连接到数据库,并且 运行 使用 的 SQL 语句--inlineRc 选项(并指定数据库 url/user/password),但我无法使用 --rcFile 选项(使用 url/user/password 在文件中)。我在这里错过了什么?

这个有效:

java -classpath /hsqldb/2.3.2/hsqldb-2.3.2.jar:/hsqldb/sqltool/2.3.2/sqltool-2.3.2.jar org.hsqldb.cmdline.SqlTool --sql "\dt" --inlineRc url=jdbc:hsqldb:hsql://localhost:8887/myDb,user=sa,password=

“\dt”命令的结果是数据库表的列表:

TABLE_SCHEM  TABLE_NAME
-----------  -----------------------------
PUBLIC       USERS
PUBLIC       USER_ADDRESS
PUBLIC       USER_PHONE

这行不通:

java -classpath /hsqldb/2.3.2/hsqldb-2.3.2.jar:/hsqldb/sqltool/2.3.2/sqltool-2.3.2.jar org.hsqldb.cmdline.SqlTool --sql "\dt" --rcFile /hsqldb/setup/sqltool.rc

结果是:

SEVERE  Error at '--sql' line 1:
"\dt"
We are not connected to a Data Source, but one is required for this action
org.hsqldb.cmdline.SqlTool$SqlToolException

并且 /hsqldb/setup/sqltool.rc 文件包含:

# This is for a hsqldb Server running with default settings on your local
# computer (and for which you have not changed the password for "sa").
urlid mydbid
url jdbc:hsqldb:hsql://localhost:8887/myDb
username sa
password

我尝试了很多变体;在参数之间使用 space 或在参数之间使用 '=',将所有参数放在一行中,就像 --inlineRc 选项一样,将文件命名为 sqltool.rc(默认)并放入我的用户主页目录(默认位置)等。我在这里多次阅读文档:

Chapter 1. SqlTool

似乎没有任何效果。为什么?

--help开关。这显示了所需的语法。您多次阅读的文档中的第一个示例说:

java -jar $HSQLDB_HOME/lib/sqltool.jar --help

我终于弄明白了为什么 --rcFile 参数不起作用。我需要在命令行上指定 urlid,通常作为最后一个参数。 --help 选项确实显示了这一点,但由于在使用 --inlineRc 选项时不需要它,我认为它不是必需的。使用 --rcFile 参数时, 是必需的。我对 RC 文件的工作原理缺乏了解。

RC 文件可以包含多个数据库连接定义,每个定义由 urlid 标识。在命令行上使用 --rcFile 参数时,我需要指定 which rcFile 中的 urlid 具有数据库连接的参数,即使只定义了一个。使用上面的 /hsqldb/setup/sqltool.rc 示例,运行 SqlTool 并列出所有表 ("\dt") 的命令行应如下所示:

java -classpath /hsqldb/2.3.2/hsqldb-2.3.2.jar:/hsqldb/sqltool/2.3.2/sqltool-2.3.2.jar org.hsqldb.cmdline.SqlTool --sql "\dt" --rcFile /hsqldb/setup/sqltool.rc mydbid

不幸的是,在 hsqldb.org 没有很好的记录。