Я пытаюсь написать программу unix, в которой мне нужно подключиться к SQL DB и получить данные и сохранить их в файл.Передача имени файла spool в sqlplus из сценария оболочки
В настоящее время я использую следующую команду:
output1=`sqlplus -s [email protected]/password <<EOF
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING ON ECHO OFF;
SPOOL EMP_NAMES.txt
select emp_name from employee order by emp_name;
Spool off;
Это работает отлично. Но мое требование состояло в том, что я хочу передать значение файла спула таким образом, чтобы каждый раз создавался новый файл Spool.
Я в принципе хочу, чтобы добавить дату в конце имени файла, как:
date=`date +'%d/%m/%Y_%H:%M:%S:%2N'`
output1=`sqlplus -s [email protected]/password <<EOF
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING ON ECHO OFF;
SPOOL EMP_NAMES_$date.txt
Пожалуйста, дайте мне знать, каким образом это можно сделать.
Спасибо @codeforester за супер быстрый ответ !!! Ive пробовал предлагаемые шаги, но все еще получал ошибку. spoolFile = "SPOOL_FILE _" $ date ".txt" output1 = 'sqlplus -s username @ SID/pwd << EOF SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING ON ECHO OFF COLSEP |; SPOOL $ spoolFile Запрос ... SPOOL OFF; Пожалуйста, дайте мне знать, если есть какой-то шаг, который я пропустил. Спасибо заранее. –
Является ли «EOF» в самом начале строки, и на этой строке нет других персонажей? Какая ошибка вы получаете? – codeforester
Его в конце линии, как - output1 = 'Sqlplus -s имя пользователя @ SID/PWD << EOF Ошибка как - ./Shell.sh: линия 351: SPOOL_FILE.txt: Нет такой файл или каталог –