Конвертировать Unix Shell Script в Windows Batch File - PullRequest
2 голосов
/ 03 февраля 2012

У меня есть сценарий оболочки (.sh), который работает в Unix, но я хотел бы преобразовать его в пакетный файл 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

Я не слишком осведомленпакетные файлы, но если ответ - это несколько советов, а не полное решение, то я уверен, что я буду разбираться.Это поможет с ответом на другой вопрос здесь .

Ответы [ 2 ]

3 голосов
/ 03 февраля 2012

Пакетные файлы 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 
2 голосов
/ 03 февраля 2012

Там есть некоторые сложные решения с точки зрения встраивания, но, как уже упоминалось, простое решение будет использовать echo.

@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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...