警告:我不是编写脚本的专家,并且我的英语很糟糕,请见谅。
如果从数据库查询生成 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%
我正在使用 grep 的 Windows 实现。
java 和 grep命令2>>%LOGFILE%
都导致出现错误消息,表明该文件正在被另一个进程使用。
我想到的一个糟糕的解决方法是将 grep 错误重定向到临时%LOGFILE%.aux
java ... | grep ... 2>>%LOGFILE%.aux
type %LOGFILE%.aux >> % %LOGFILE%
del %LOGFILE%.aux
有什么更好的解决办法?
答案1
我不会用 Java 来做这件事,而是使用脚本语言,比如 perl、powershell、vbscript(至少从管理员的角度来看)。这些语言在 Windows 下都有出色的数据库接口。我更喜欢 powershell。参见此MS 新闻组帖子这是在 powershell 中从数据库读取数据的示例。