에코 문자열에 SQL * Plus set
명령을 포함 할 수 있지만 새로운 행을 삽입해야합니다. echo에서 printf로 전환하면 간단하게/cleaer 할 수 있습니다.
그런 다음 CSV 출력을 얻을 수있는 쉼표로 열을 연결할 수 있습니다 :
printf "set pages 0 lines 200 trimout on tab off feedback off\nselect col1||','||col2 from table1;exit" | /opt/....
는 또한 귀하의 의견에 따라 라인 크기를 증가했습니다. You can read more about the settings available 및 formatting in general.
열에 쉼표가 포함될 수있는 문자열이 포함되어있는 경우 값을 큰 따옴표로 묶어두면 Excel이나 다른 도구로 추가 열로 잘못 이해할 수 있습니다.
당신은뿐만 아니라 CSV 헤더를 원하는 경우에 당신은 그들을 얻을, 또는 고정 텍스트 추가 프롬프트 명령을 사용하여 더미 쿼리를 가질 수 있습니다
printf "set pages 0 lines 200 trimout on tab off feedback off\nprompt COL1,COL2\nselect col1||','||col2 from table1;exit" | /opt/....
을 그리고 당신은 SQL을 만들기 위해 -s
플래그를 사용할 수 있습니다 * 플러스의 배너를 억제 :
... exit" | /opt/xxx/oracle/client/bin/sqlplus -s "abc/[email protected]"
을 덧붙여, 당신은 이름을 서비스하는 SID를 사용하여 전환 할 수 있다면, 당신은 '쉽게 연결'구문을 단락 사용할 수 있습니다 전체 TNS는 기술자를 연결하는 대신.
간단한 쿼리가있는 빠른 데모; 내가 명령 줄에서이 작업을 수행 할 경우 (단지 스크롤 방지하기 위해 두 행으로 분할) :
이
printf "set pages 0 feedback off\nprompt Col1,Col2\nselect dummy||','||dummy from dual;" |\
/path/to/sqlplus -s myuser/[email protected]//myhost:myport/myservicename
내가 얻을 전체 출력은 다음과 같습니다
Col1,Col2
X,X
난 심각 적어도 SQL 명령을 넣어 고려할 것 .sql 스크립트 파일에 저장하고 SQL * Plus에서 실행합니다. 아마도 쉘 스크립트에 전체 명령 (sqlplus
전화 호출)을 넣어서 cron에서 쉘 스크립트를 호출 할 수 있습니다.
그건 cron과 관련이 없습니다. 먼저 명령 행에서 동일한 작업을 수행 할 수 있습니다. SQL \ * Plus에서 실행하는 스크립트가 아닌 crontab 자체에 SQL을 넣을 이유가 있습니까? –
'sqlplus '다음에'-S'ilent 명령을'sqplus -s user/password'로 사용할 수 있습니다. – JSapkota
이유가 있습니다 - 스크립트는 한 번에 실행됩니다 – 4est