5

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.

4

6 回答 6

9

对于甲骨文:

如何通过 sql plus 从命令行发出单个命令?

@echo select version from system; | sqlplus username/password@database 

您可以将输出通过管道传输到文件并使用它,或者将其包装在for命令中以解析批处理文件中的输出。

于 2010-01-12T12:27:17.653 回答
5

编辑:这个答案适用于 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>选项。

于 2010-01-12T09:33:33.833 回答
3

这取决于您用来执行查询的工具。例如,对于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 程序。

于 2010-01-12T09:36:16.500 回答
2

尝试

sqlplus user/pwd@mydb @query.sql > result.txt

其中 query.sql 包含数据库查询,result.txt 将填充查询输出。

根据查询,输出文件可能与您期望的不同(列标题等作为典型的 sqlplus),因此您的 query.sql 应包含一些 SET 命令以根据您的需要调整输出。

另一种方法是使用 Oracle SPOOL 命令而不是将结果通过管道传输到文件。

于 2010-01-12T10:25:10.437 回答
1

尝试这个:

http://www.dbforums.com/oracle/1044496-sqlplus-return-value-help.html

于 2010-01-12T10:11:18.533 回答
0

如果您有一个命令行 SQL 实用程序,那很可能它允许命令行操作。根据您的 SQL 版本,您可以检查它。

于 2010-01-12T09:34:21.130 回答