.bat文件可以执行sql查询并返回一个值吗?

时间:2010-01-12 09:30:17

标签: sql oracle batch-file return-value nsis

如何从.bat文件调用查询? (比如我的查询是:从系统中选择版本)。

我的.bat文件可以保存此查询返回的输出吗?我想在NSIS脚本中使用此输出。

6 个答案:

答案 0 :(得分:9)

对于Oracle:

How can I issue a single command from the command line through sql plus?

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

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

答案 1 :(得分: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>选项。

答案 2 :(得分:3)

这取决于您用于执行查询的工具。例如,对于the mysql command line tool,您可以执行以下操作:

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程序。

答案 3 :(得分:2)

尝试

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

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

根据查询,输出文件可能不像您期望的那样(列标题等与sqlplus一样),因此您的query.sql应该包含一些SET命令来根据您的需要调整输出。

另一种方法是使用Oracle SPOOL命令,而不是将结果传递给文件。

答案 4 :(得分:1)

答案 5 :(得分:0)

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