警告:我不擅长编写脚本,对于糟糕的英语感到抱歉。
在从数据库查询生成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。
java和grep命令中的2>>%LOGFILE%正在导致错误消息,表明该文件正在被另一个进程使用。
我提出的丑陋解决方法是将grep错误redirect到临时的%LOGFILE%.aux
java ... | grep ... 2>>%LOGFILE%.aux type %LOGFILE%.aux >> % %LOGFILE% del %LOGFILE%.aux
什么是更好的解决scheme?
我不会在java中这样做,使用像Perl,PowerShell,VBScript(至less从pipe理的angular度来看)的脚本语言。 其中的任何一个在windows下都有很好的数据库接口 我的首选是powershell。 请参阅MS新闻组post ,以获取从PowerShell中的数据库读取的示例。