Предупреждение: я не специалист по созданию скриптов и прошу прощения за паршивый английский.
В случае создания 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
Какое решение лучше?
Я бы не стал делать это на java, использовал бы язык сценариев, такой как perl, powershell, vbscript (по крайней мере, с точки зрения администратора). Любой из них имеет отличный интерфейс базы данных под окнами. Я предпочитаю PowerShell. Посмотри это Сообщение группы новостей MS для примера чтения из базы данных в PowerShell.