Чтение выходного файла SQLCMD с использованием Java - PullRequest
0 голосов
/ 17 ноября 2011

Я выполняю несколько сценариев 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 и ошибки в файл журнала. Сразу после выполнения вышеприведенных операторов я пытаюсь прочитать содержимое файла OUTPUT.LOG, используя File Reader и BufferedReader. При попытке открыть файл OUTPUT.LOG возникает исключение.

(система не может найти указанный файл)

Я проверяю путь, где файл должен быть сохранен, и, разумеется, его там нет. Когда я пытаюсь вручную выполнить команду через командную строку, она работает и записывает файл журнала с ошибками, как и ожидалось. Что я делаю не так?

1 Ответ

2 голосов
/ 17 ноября 2011

Ваши перенаправления (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, которое запустит строку в командной оболочке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...