如何从.bat文件调用查询? (比如我的查询是:从系统中选择版本)。
我的.bat文件可以保存此查询返回的输出吗?我想在NSIS脚本中使用此输出。
答案 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版本,您可以查看它。