Перенаправление ошибок обработки команд Windows
Предупреждение: я не специалист по созданию сценариев, и извините за паршивый английский.
В случае генерации CSV из запроса к базе данных я использую следующие команды.
CALL java.exe -classpath ... com.xigole.util.sql.Jisql -user dmfodbc -pf pwd.file -driver com.sybase.jdbc3.jdbc.SybDriver -cstring %constr% -c ; -input 42.sql -formatter csv -delimiter ; 2>>%LOGFILE% | CALL grep -v -e "SELECT right" -e "executing: " -e " rows affect" > %FicheiroR% 2>>%LOGFILE%
Я использую Windows-реализацию grep.
2>>%LOGFILE%
в командах java и grep вызывает сообщение об ошибке, указывающее, что файл используется другим процессом.
Уродливый обходной путь, который я придумал, состоит в том, чтобы поместить ошибку перенаправления grep во временную %LOGFILE%.aux
java ... | grep ... 2>>%LOGFILE%.aux
type %LOGFILE%.aux >> % %LOGFILE%
del %LOGFILE%.aux
Какое решение лучше?
1 ответ
Я бы не стал делать это в Java, использую язык сценариев, такой как perl, powershell, vbscript (по крайней мере, с точки зрения администратора). У любого из них есть превосходные интерфейсы базы данных под окнами. Я бы предпочел PowerShell. Смотрите этот пост группы новостей MS для примера чтения из базы данных в powershell.