Shell script appending output of sql query


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Shell script appending output of sql query
# 1  
Old 03-20-2018
Shell script appending output of sql query

I am writing the following script to create the file v_out.txt.

HTML Code:
sqlplus -s /nolog << EOF
CONNECT scott/tiger@orcl;
whenever sqlerror exit sql.sqlcode;
set newpage 0;
SET PAGESIZE 0;
SET ECHO OFF;
SET FEEDBACK OFF;
SET HEADING OFF;
SET VERIFY OFF;
SET LINESIZE 100;
set tab off;
set trimspool off;
  spool v_out.txt
     SELECT '/****************************************************'
      ||CHR(10)
      || '************* Creating Table **************'
      ||CHR(10)
      || '*****************************************************/'
  FROM dual;
I want to append this file v_out.txt with the output of another query based on the condition provided below.

HTML Code:
select status from t1 where id = 10;
 if  status = 'COMPLETE' THEN
   SELECT COL1||' '||COL2 FROM T2;
 else 
   'status not complete'
  end if;
Any suggestions on how to do this will be appreciated.
# 2  
Old 03-20-2018
Is this within the same sqlplus session, or have you issues spool off perhaps?

I would think that:-
Code:
spool /tmp/a.txt ;
select Hello   from dual;
select Goodbye from dual;

.... type structure in your SQL would write a single output.

Can you show us what you have that is not working?



Robin
# 3  
Old 03-20-2018
Note that SPOOL has an APPEND option. So all you have to do is use it when you run your 2nd SQL:-
Code:
SPOOL v_out.txt APPEND

# 4  
Old 03-20-2018
i am trying this but it is not working..it is only printing first sql session output.. please advise..

Code:
variable1=$ echo "set feed off
set pages 0
select status from t1 where id = 10;
exit"  | sqlplus -s scott/tiger@orcl > v_tmp.txt
 
sqlplus -s /nolog << EOF
CONNECT scott/tiger@orcl;
whenever sqlerror exit sql.sqlcode;
set newpage 0;
SET PAGESIZE 0;
SET ECHO OFF;
SET FEEDBACK OFF;
SET HEADING OFF;
SET VERIFY OFF;
SET LINESIZE 100;
set tab off;
set trimspool off;
spool v_out.txt

     SELECT '/****************************************************'
      ||CHR(10)
      || '************* Creating  Table **************'
      ||CHR(10)
      || '*****************************************************/'
  FROM dual;
 spool off      
exit;

if [[ $(cat v_tmp.txt) == 'COMPLETE' ]]; then
		 echo "#_______________________________________________________#"
		 echo "STATUS IS COMPLETE"
		 echo "#_______________________________________________________#"
		
else 
     echo "#_______________________________________________________#"
		 echo "STATUS IS PENDING"
		 echo "#_______________________________________________________#"

 sqlplus -s /nolog << EOF
CONNECT scott/tiger@orcl;
whenever sqlerror exit sql.sqlcode;
set newpage 0;
SET PAGESIZE 0;
SET ECHO OFF;
SET FEEDBACK OFF;
SET HEADING OFF;
SET VERIFY OFF;
SET LINESIZE 100;
set tab off;
set trimspool off;
spool V_OUT.txt append
     SELECT COL1||' '||COL2 FROM T2;
 spool off      
exit
fi;

# 5  
Old 03-20-2018
File name is case sensitive:-
Code:
spool v_out.txt
spool V_OUT.txt append

will create two different files.
# 6  
Old 03-20-2018
tried that ..still not working..
# 7  
Old 03-20-2018
You should ensure the here document is closed for both your SQL blocks:-
Code:
sqlplus -s /nolog << EOF
connect $conn_str;
whenever sqlerror exit sql.sqlcode;
set newpage 0;
SET PAGESIZE 0;
SET ECHO OFF;
SET FEEDBACK OFF;
SET HEADING OFF;
SET VERIFY OFF;
SET LINESIZE 100;
set tab off;
set trimspool off;
spool v_out.txt
select 'First SQL' from dual;
spool off;
exit;
EOF

sqlplus -s /nolog << EOF
connect $conn_str;
whenever sqlerror exit sql.sqlcode;
set newpage 0;
SET PAGESIZE 0;
SET ECHO OFF;
SET FEEDBACK OFF;
SET HEADING OFF;
SET VERIFY OFF;
SET LINESIZE 100;
set tab off;
set trimspool off;
spool v_out.txt append
select 'Second SQL' from dual;
spool off;
exit;
EOF

Produces output:-
Code:
$ cat v_out.txt
First SQL
Second SQL

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Not able to write SQL query output in to .csv file with shell script.

I am trying to write SQL query output into a .csv file. But in the output columns are displaying in different lines instead of coming in one line. Main Code shell script: this is my code: #!/bin/bash file="db_detail.txt" . $file rm /batch/corpplan/bin/dan.csv... (6 Replies)
Discussion started by: sandeepgoli53
6 Replies

2. Shell Programming and Scripting

Run sql query in shell script and output data save as delimited text

I want to run sql query in shell script and output data save as delimited text (delimited text would be comma) Code: SPOOL_FILE=/pgedw/dan.txt SQL=/pgedw/dan.sql sqlplus -s username/password@myhost:port/servicename <<EOF set head on set COLSEP , set linesize 32767 SET TRIMSPOOL ON SET... (8 Replies)
Discussion started by: Jaganjag
8 Replies

3. Shell Programming and Scripting

SQL Query in Shell Script output formatting

Hi All, #!/bin/ksh call_sql () { sql=$1 sqlplus -s $sqlparam_sieb <<EOF SET ECHO OFF; SET NEWPAGE NONE; SET SQLBL OFF; SET VERIFY OFF; SET LINESIZE 2000; SET... (2 Replies)
Discussion started by: Kevin Tivoli
2 Replies

4. Shell Programming and Scripting

Shell script to perform appending of .sql files

Hi, We are having multiple .sql files generated programatically which is not containing.. create or replace -- at the start and / -- at the end We need to append those .sql files with the above 2 statements at their respective positions. We will be really thankful to get responses... (6 Replies)
Discussion started by: Rami Reddy
6 Replies

5. Shell Programming and Scripting

SQL query in UNIX script - output in flat file

Hi, I never did this before... what I want to do is execute a SQL query from a unix script and redirect sql query's output to a flat file (comma separated one) without the header info (no column names). I would also want not to print the query's output to the screen. snapshot of my script:... (13 Replies)
Discussion started by: juzz4fun
13 Replies

6. Red Hat

Sql query through shell script

hey , i am using this code to store value of a sql query and and then use it in other query but after some time , but it is not working. please help #!/bin/bash val_1=$( sqlplus -s rte/rted2@rel76d2 << EOF setting heading off select max(stat_id) from cvt_stats; exit EOF ) nohup... (5 Replies)
Discussion started by: ramsavi
5 Replies

7. Shell Programming and Scripting

Problem in formatting output of SQL query in excel sheet in shell script

Hi Guys.. Need your help to format the output of my shell script. I am using spool command to take out put in csv file. below is my code. (for example) col USERNAME for a15 col EMAIL for a30 col FULL_NAME for a20 col LAST_LOGIN for a40 col DATE_CREATED for a40 SPOOL 120.csv... (3 Replies)
Discussion started by: Agupte
3 Replies

8. Shell Programming and Scripting

query sql using shell script

query sql using shell script, is it possible? my friend told me to do a file.sql and link to my shell script, but can i query sql using shell script? thanks in advance! (2 Replies)
Discussion started by: kingpeejay
2 Replies

9. Shell Programming and Scripting

need help in reading a output of a sql query in unix script

i'm used a sql query in a unix script to get the information from table. but unable to extract the output which i need. Any help with logic will be greatly appreciated. my sql query provide output some thing like this - col1 col2 count ---- ---- ------ A B 10 c D 6 e... (8 Replies)
Discussion started by: pharos467
8 Replies

10. Shell Programming and Scripting

executing a SQL query in shell script

Hi ALL, I need an help in connecting to oracle database, executing a select query and printing it on the screen. Can any one please write a simple code or psuedo code and let me know. select query returns multiple values( say select name from emp) Thanks in advance LM (1 Reply)
Discussion started by: lijju.mathew
1 Replies
Login or Register to Ask a Question