2010-01-12 154 views

回答

8

对于Oracle:

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

@echo select version from system; | sqlplus username/[email protected] 

您可以管道输出到一个文件并使用,或者把这个包在for命令来分析你的批处理文件中的输出。

+0

这就是我正在寻找..谢谢:) – Pia 2010-01-12 12:42:08

+0

@ patrick..how我们可以管输出到一个上面的文件? – Sunny 2013-12-14 18:25:07

+0

@Sunny; '@echo从系统中选择版本; | sqlplus用户名/密码@ database> file.ext'。 – 2014-01-02 11:47:19

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

对于SQL Server,这工作完美 – Pia 2010-01-13 10:22:28

0

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

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

2

尝试

sqlplus user/[email protected] @query.sql > result.txt 

其中query.sql的包含数据库查询和的Result.txt将充满查询输出。

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

另一种方法是使用Oracle SPOOL命令而不是将结果输送到文件。

+0

这是很好,但列的格式不好... – 2013-05-24 14:31:52

相关问题