gpt4 book ai didi

java - 使用Java读取SQLCMD的输出文件

转载 作者:行者123 更新时间:2023-12-02 08:05:57 24 4
gpt4 key购买 nike

我正在执行一堆 SQL 脚本,并尝试在每个文件执行后读取输出日志文件,查找错误。

这是我执行脚本的方式。

String strCommand = "sqlcmd -S SERVERNAME -d DBNAME -U USERNAME -P PASSWORD -r0 -i \"SCRIPT.sql\" 2> \"OUTPUT.LOG\" 1> NULL";
Process process = Runtime.getRuntime().exec(strCommand);
process.waitFor();

我已将标准输出重定向到 NULL 并将错误重定向到日志文件。执行上述语句后,我立即尝试使用 File ReaderBufferedReader 读取 OUTPUT.LOG 文件的内容。尝试打开 OUTPUT.LOG 文件时引发异常。

(The system cannot find the file specified)

我检查了文件应该保存的路径,不用说,它不在那里。当我尝试通过命令提示符手动执行命令时,它会按预期工作并写入带有错误的日志文件。我做错了什么?

最佳答案

如果您从命令 shell 运行,您的重定向(2> 等)将起作用,但如果您像这样直接从 java 运行,则不起作用。

尝试以下操作(适用于 Windows):

String strCommand = "cmd /c sqlcmd -S SERVERNAME -d DBNAME -U USERNAME -P PASSWORD -r0 -i \"SCRIPT.sql\" 2> \"OUTPUT.LOG\" 1> NULL";
Process process = Runtime.getRuntime().exec(strCommand);
process.waitFor();

请注意添加了 cmd/c,它将在命令 shell 中运行该字符串。

关于java - 使用Java读取SQLCMD的输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8165723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com