【问题标题】:Can .bat file execute an sql query and return a value?.bat 文件可以执行 sql 查询并返回值吗?
【发布时间】:2011-01-04 02:36:46
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    编辑:此答案适用于 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 实用程序,那很可能它允许命令行操作。根据您的 SQL 版本,您可以检查它。

      【讨论】:

        【解决方案3】:

        这取决于您用来执行查询的工具。例如,对于the mysql command line tool,你会这样做:

        mysql -u<user> -p<password> -h<host> -Nrs -e"SELECT version() FROM system" > out.txt
        

        这里,mysql -u&lt;user&gt; -p&lt;password&gt; -h&lt;host&gt; 是连接到服务器的标准选项。 -Nrs 是一组选项,它们将导致客户端不输出结果的所有 ascii 艺术。 -e"SELECT version() FROM system" 的位实际上指定了应该执行的命令。有关这些 mysql 特定选项的更多信息,请参阅http://dev.mysql.com/doc/refman/5.1/en/mysql-command-options.html。在您要使用的客户端工具中寻找类似的选项。

        最后一点,&gt; out.txt 是标准操作系统级重定向。它将导致来自 mysql 程序的输出存储在文件out.txt 中,但也许您也可以直接重定向到您的 NSIS 程序。

        【讨论】:

          【解决方案4】:
          【解决方案5】:

          试试

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

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

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

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

          【讨论】:

            【解决方案6】:

            对于甲骨文:

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

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

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

            【讨论】:

            • 这正是我想要的......谢谢:)
            • @Sunny; @echo select version from system; | sqlplus username/password@database &gt; file.ext.
            猜你喜欢
            • 2017-09-18
            • 2011-02-20
            • 2017-09-10
            • 2022-08-19
            • 1970-01-01
            • 2015-07-20
            • 1970-01-01
            • 2014-08-19
            • 1970-01-01
            相关资源
            最近更新 更多