我可以运行命令行SqlTool for HSQLDB来连接数据库并使用 - inlineRc 选项运行SQL语句(并指定数据库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"的结果command是数据库表的列表:
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
我尝试了很多变化;使用参数之间的空格或' ='在参数之间,将所有参数放在一行上,与--inlineRc选项完全相同,命名文件sqltool.rc(默认值)并放入我的用户主目录(默认位置)等。我已通读了文档多次在这里:
似乎没什么用。为什么呢?
答案 0 :(得分:1)
我终于弄清楚为什么--rcFile参数不起作用。我需要在命令行中指定 urlid ,通常作为最后一个参数。 --help选项确实显示了这一点,但由于在使用--inlineRc选项时不需要它,我认为没有必要。使用--rcFile参数时,是必需的。我对RC文件的工作方式缺乏了解。
RC文件可以包含多个数据库连接定义,每个定义由 urlid 标识。在命令行上使用--rcFile参数时,我需要指定 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没有出色地记录。
答案 1 :(得分:0)
提供--help
开关。这显示了所需的语法。您多次阅读的文档中的第一个示例说:
java -jar $HSQLDB_HOME/lib/sqltool.jar --help