#sql-server #shell #sybase #sqlcmd #isql
Вопрос:
мы переносим некоторые сценарии оболочки из unix в Linux, и мы абсолютно новички. Некоторые сценарии вызывают сценарии slq, которые содержат инструкции для операций с базой данных syabase, которую мы переносим в базу данных sql server, поэтому мы также переписываем эти сценарии sql. Наши новые сценарии оболочки напрямую вызывают команду sqlcmd и уже передают сервер БД, имя БД, пользователя и пароль, хранящиеся в переменных среды:
sqlcmd -S $SERVER_DB -d $NAME_DB -U $USER_DB -P $PASSW_DB < /home/scripts/update_data.sql
но в первой строке каждого sql-скрипта, который нам нужно преобразовать, мы находим аналогичное утверждение:
isql -U$DBUSER -P$DBPASSWD -w 80<< EOF|grep -v "return status" >>/usr/local/abc/ABC.txt
Возможно, потому, что для некоторых пользователей по умолчанию было установлено определенное подключение к базе данных syabase, поэтому было достаточно поместить вызов команды isql в первую строку файла sql, передавая только пользователя и пароль, но в нашем случае с помощью sqlcmd мы уже передаем все непосредственно в сценарии оболочки, нет необходимости снова вызывать команду sqlcmd в первой строке сценария sql.
Итак, что мы должны написать вместо вызова isql, но оставить часть, которая перенаправляет вывод на ABC.txt досье?
Заранее спасибо
Комментарии:
1. Никто не знает, как мне помочь?
2. Все, что делает grep-v в нижней строке, — это удаляет любой текст «статус возврата» в выходных данных и передает его в /usr/local/abc/ABC.txt — он не имеет функции в самом isql. Возможно, вам нужно перефразировать свой вопрос?
3. Вы также можете использовать параметр-o для выходного имени файла для sqlcmd, или, если вы работаете в Linux/Unix, > > > в файл должен работать точно так же, как и с isql, в качестве команды перенаправления операционной системы.