
여기서는 sqlplus를 사용하여 일반 쿼리를 실행하고 결과를 CSV 파일에 덤프하려고 합니다. 그런 다음 다른 작업을 수행해야 합니다. sqlplus 쿼리를 실행한 후 스크립트가 계속되지 않고 결과만 보고 출력을 덤프합니다. csv 파일을 저장했지만 계속되지 않습니다. 또한 결과를 보지 않고 데이터를 덤프하는 방법을 모르겠습니다.
#!/bin/bash
cd /dir/test_dir
sqlplus -s test/test <<EOF
set colsep ,
set underline off,
set headsep off,
set feedback off,
set long 99999,
set linesize 32767,
set trimspool on,
spool report(date +%Y-%m-%d).csv
select a.s, a.d, a.t, a.ww, a.tt from test a;
exit;
EOF
cd ../
mkdir test/
.
.
.
답변1
EOF
다음을 포함 하는 행선행 공백로 시작된 here 문서를 종료하지 않습니다 <<EOF
. EOF
선행 공백 없이 사용하십시오 . 대신에
EOF
당신은 사용해야합니다
EOF
또는 리디렉션을 사용하여 행을 변경한 sqlplus -s test/test <<-EOF
다음 탭으로 들여쓰기합니다.
리디렉션 연산자가 인 경우
<<-
모든 선행 탭 문자가 입력 줄과 구분 기호가 포함된 줄에서 제거됩니다. 이를 통해 쉘 스크립트 내의 여기 문서를 자연스러운 방식으로 들여쓰기할 수 있습니다.
(원천)