我有一个在 Unix 中工作的 shell 脚本 (.sh),但我想将它转换成一个 Windows 批处理文件 (.bat):
cat >flog.ctl <<_EOF
LOAD DATA
INFILE '$1.log' "str ';'"
APPEND INTO TABLE flog
fields terminated by '=' TRAILING NULLCOLS
(
filename constant '$1'
,num char
,data char
)
_EOF
sqlldr <username>/<password>@<instance> control=flog.ctl data=$1.log
我对批处理文件不太了解,但如果答案是一些提示而不是完整的解决方案,那么我确定我会得过且过。这是为了帮助回答另一个问题 here .
最佳答案
Windows 批处理文件不支持以这种方式内联数据。你必须
ECHO firstLine > flog.ctl
ECHO additionalLine >> flog.ctl
Windows 批处理文件使用 % 符号表示 ECHO 语句中的变量,即 %1%。
所以你得到的文件应该是这样的:
@ECHO OFF
ECHO LOAD DATA > flog.ctl
ECHO INFILE '%1%.log' "str ';'" >> flog.ctl
ECHO APPEND INTO TABLE flog >> flog.ctl
ECHO fields terminated by '=' TRAILING NULLCOLS >> flog.ctl
ECHO ( >> flog.ctl
ECHO filename constant '%1%' >> flog.ctl
ECHO ,num char >> flog.ctl
ECHO ,data char >> flog.ctl
ECHO ) >> flog.ctl
sqlldr <username>/<password>@<instance> control=flog.ctl data=%1%.log
关于windows - 将 Unix Shell 脚本转换为 Windows 批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9121876/