How can I call a query from a .bat file? (say my query is: select version from system).
Can my .bat file save the output that this query returns? I wanna use this output in my NSIS script.
How can I call a query from a .bat file? (say my query is: select version from system).
Can my .bat file save the output that this query returns? I wanna use this output in my NSIS script.
对于甲骨文:
@echo select version from system; | sqlplus username/password@database
您可以将输出通过管道传输到文件并使用它,或者将其包装在for
命令中以解析批处理文件中的输出。
编辑:这个答案适用于 SQL Server,而不是 Oracle。(问题发布时尚不清楚)。
您可能需要检查sqlcmd实用程序。
sqlcmd 实用程序允许您在命令提示符处输入 Transact-SQL 语句、系统过程和脚本文件。以下示例在 sqlcmd 启动时执行查询,然后立即退出。可以执行多个分号分隔的查询:
sqlcmd -d AdventureWorks -Q "SELECT FirstName, LastName FROM Person.Contact WHERE LastName LIKE 'Whi%';"
要将查询的输出保存到文件中,您可以使用该-o C:\< filename>
选项。
这取决于您用来执行查询的工具。例如,对于mysql 命令行工具,您可以:
mysql -u<user> -p<password> -h<host> -Nrs -e"SELECT version() FROM system" > out.txt
在这里,要做mysql -u<user> -p<password> -h<host>
的就是连接到服务器的标准选项。-Nrs
是一组选项,将导致客户端不输出结果的所有 ascii 艺术。实际发生的位-e"SELECT version() FROM system"
指定应该执行的命令。有关这些 mysql 特定选项的更多信息,请参阅http://dev.mysql.com/doc/refman/5.1/en/mysql-command-options.html。在您要使用的客户端工具中寻找类似的选项。
最后一点,> out.txt
是标准的操作系统级重定向。它将导致来自 mysql 程序的输出存储在一个文件out.txt
中,但也许您也可以直接重定向到您的 NSIS 程序。
尝试
sqlplus user/pwd@mydb @query.sql > result.txt
其中 query.sql 包含数据库查询,result.txt 将填充查询输出。
根据查询,输出文件可能与您期望的不同(列标题等作为典型的 sqlplus),因此您的 query.sql 应包含一些 SET 命令以根据您的需要调整输出。
另一种方法是使用 Oracle SPOOL 命令而不是将结果通过管道传输到文件。
如果您有一个命令行 SQL 实用程序,那很可能它允许命令行操作。根据您的 SQL 版本,您可以检查它。