Вы, похоже, используете Microsoft Windows db2cmd.exe.
Ваш вопрос не имеет ничего общего с Db2, но вместо этого он больше касается синтаксиса сценариев CMD
(cmd.exe), унаследованногоязык сценариев для пакетных файлов Microsoft, который по-прежнему работает в Windows-10 и также работает в db2cmd.exe
.
В оболочке db2cmd.exe вы можете использовать последовательность «&&» между различными командами Db2 (икаждая такая команда должна иметь префикс db2
). Кроме того, каждая такая командная строка должна экранировать любые символы, которые специальные символы , в самой оболочке. По умолчанию escape-символ является символом вставки (^).
Например, db2 connect to dbname && db2 ^"export to alarms.csv of del ... select ^* from alarms^" && db2 connect reset
(я показываю ^ перед любым ", который вы, возможно, захотите передать в Db2-CLP).
Но для этого &&
потребуется, чтобы каждая команда возвращала нулевой код выхода, что может быть не тем, что вы хотите, хотя обычно это самый безопасный вариант. Если предыдущая команда не выполняется, последующие команды не будут выполняться.
Если вы хотите допустить использование ненулевых кодов выхода, используйте скобки ( ... )
для группировки команд, а затем используйте &&
или &
вне скобок в зависимости от ваших требований. Вы можете прочитать оСценарии CMD в любой хорошей книге, множество примеров в Интернете.
Однако при написании сценариев для Db2 в Windows гораздо разумнее добавить все команды (без префикса Db2) в простой текстовый файл,и затем попросите Db2 clp выполнить текстовый файл с помощью синтаксиса db2 -tvf texfile
. Делая это таким образом, вы можете добавить условную логику в текстовый файл, обрабатывать исключения, избегать оболочки escaтребования пинга и т. д. Если вы инкапсулируете всю свою логику в сценарии, это упрощает тестирование, а также облегчает запуск из одной командной строки db2cmd /c ....
.
Если вы хотите создать пакетфайл (* .bat или * .cmd), для вызова которого не требуется префикс db2cmd
, вы можете изменить свой пакетный файл так, чтобы в начале пакетного файла было несколько строк для повторного выполнения самого себя с помощью db2cmd.exe
,Это работает лучше, если ваш db2cmd.exe
уже находится в переменной окружения PATH
, но если это не так, вы можете полностью указать абсолютный путь к вашему db2cmd.exe
в командном файле. Строки, добавляемые в начале пакетного файла:
@rem re-execute via db2cmd if running from cmd.exe
@echo off
if "%DB2CLP%"=="" db2cmd /c /i /w "%0" %* & goto :EOF
db2 connect to sample user db2admin using pwd
if errorlevel 1 @echo "Failed to connect to database " && @goto :EOF
db2 "EXPORT TO result.csv OF DEL MODIFIED BY NOCHARDEL SELECT * FROM alarms"
if errorlevel 3 @echo "Export from Db2 failed" && @goto :EOF
Кроме того, в Windows вы можете использовать скрипты Powershell для манипулирования базами данных Db2, а также использовать подсистему Windows для Unix для запуска в стиле Unix. сценарии оболочки в некоторой конфигурации.