【问题标题】:How to run a sql script file using sqlcmd and output to both shell and file如何使用 sqlcmd 运行 sql 脚本文件并输出到 shell 和文件
【发布时间】:2012-02-06 18:37:57
【问题描述】:

我正在尝试使用 sqlcmd 从文件中运行 sql 脚本,使用以下命令:

sqlcmd -S <server> -d <database> -i <input file> -o <output file> 
      -U <user> -P <password>

我运行我的 sql 文件并输出到日志文件。

问题是这会将sqlcmd 的输出更改为文件.. 我也想将输出也获取到shell。

【问题讨论】:

  • 你找到答案了吗?如果你有它,请在这里回答,并回答我的问题:stackoverflow.com/questions/9319025/… 所以如果它有效,我会投票赞成你的答案。谢谢! :)
  • @Leandro 抱歉还没有找到答案....

标签: logging sqlcmd


【解决方案1】:

@诺姆,

在 UNIX 世界中有一个标准程序,它从 stdin 读取并写入 stdout 到指定文件:tee 命令.以下示例列出了 stdout 和“myfile”的当前目录:

$ ls | tee "myfile"

有一些适用于 Windows 的开源端口,例如 wintee,甚至可以轻松实现自己的实现(参见 here),但 PowerShell 实际上已经内置了这个实用程序:Tee-Object。下面的例子类似于前面的例子,在 PowerShell 中:

PS [c:\tmp]
> dir | tee myDirContents.txt

因此,以下命令将使用当前 Windows 凭据将 myscript.sql 执行到 myserver,,其结果将输出到控制台和强>到“result.txt”:

PS [c:\tmp]
> sqlcmd -i mysrcipt.sql -S myserver -E | tee "result.txt"

【讨论】:

    【解决方案2】:

    @Noam,虽然我找不到复制 STDOUT 处理程序的方法,但可能解决您问题的一个解决方案是将 sql 脚本执行到输出文件(即result.txt)然后使用type result.txt将其打印到 STDOUT 中。

    c:>sqlcmd -i mysrcipt.sql -o result.txt -S myserver -E
    c:>type result.txt
    

    如果您确实需要复制处理程序(可能该命令需要花费大量时间,并且您不想等到它完成后再获取第一行),您可以编写一个简单的程序将输入从 STDIN 复制到STDOUT 也成文件。然后你可以将命令重写为:

    c:>sqlcmd -i mysrcipt.sql -S myserver -E > duplicate.exe "result.txt"
    

    【讨论】:

      【解决方案3】:

      此代码可用于需要身份验证的连接

      sqlcmd -S "server_name" -d "database_name" -i "input_file" -o "output_file" -U "user_name" -P "password"
      

      【讨论】:

      • -U & -P 是服务器还是数据库?
      猜你喜欢
      • 2017-11-22
      • 2021-03-13
      • 2014-05-11
      • 1970-01-01
      • 2017-08-25
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多