sql - 如何从命令行输入 SQL 查询,并以更简单的格式检索输出

标签 sql firebird nsis

我正在使用 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/

相关文章:

installation - 如何使用 nsDialogs 创建进度条?

sql - 如何创建带有标识列的表

firebird 的 sql 代码无法编译

c# - 使用 Firebird ado.net 提供程序在客户端和服务器上请求的有线加密级别不兼容

sql - 如何使用 HeidiSQL 在 Firebird 中设置超时?

electron - 生成 Electron app.exe,它将在安装过程中要求用户输入(使用 Electron 生成器和nsis)?

64-bit - 在 64 位主机上安装到 "Program Files (x86)"

python - 使用 Python 将 PostgreSQL 查询导出到 csv 文件

mysql - 从只有 1 列的表中删除重复行?

mysql - 加快MYSQL中的自连接