我正在使用 Firebird 的 isql.exe
工具来查询现有数据库:
isql -u <username> -p <password> <database> -i <file.sql> -o <output.txt>
这会从 file.sql
读取我的 SQL 语句,并将结果保存到 output.txt
。
有没有办法通过命令行而不是从文件将 SQL 语句输入到 isql
中?
这是因为我实际上计划在 .exe 安装程序脚本中执行上述命令(通过 NSIS 安装程序的 ExecWait
)。
此外,是否有一种方法可以格式化输出,以便仅返回所需的实际信息?目前输出的第一行包含列名称,第二行包含一堆“====”作为分隔符,第三行包含实际信息,每列之间有任意数量的空格。这种输出格式使我很难在脚本中使用。
最佳答案
对于您的第一个问题,您可以在没有输入文件的情况下使用 Firebird isql:
echo select * from rdb$database; | isql -u sysdba -p password C:\path\to\db.fdb
这会将 echo 的标准输出(值 select * from rdb$database;
)重定向到 isql 的标准输入。查询的结果将打印到 isql 的标准输出(如果使用 -o
,则打印到文件)。
但是,由于 echo 是命令提示符的一项功能,我不确定这是否适用于 NSIS。否则,您将需要与 echo 执行相同操作的东西:将其参数值打印到标准输出。
正如我之前评论的,对于你的第二个问题,你应该看看 SET HEADING
也许SET WIDTH
.
关于sql - 如何从命令行输入 SQL 查询,并以更简单的格式检索输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27289421/