Script not spooling in result file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Script not spooling in result file
# 1  
Old 12-11-2012
Script not spooling in result file

Hi everyone and nice to meet you Smilie

I'm having some issues with a script I'm writing.
It's probably most chaotic, I'm no ksh guru, but the idea is to extract an ID with that query, spool it into a file, and read that file making the ID a variable. This has to be done for every row extracted by function extractData

Problem is, it doesn't spool. At all. I'm in the dark here because it has always worked for me, but not this time. It's the red/bold part of the script.
What am I doing wrong?
Thank you in advance!


Code:
#!/bin/ksh
set -x
###########
#FUNCTIONS#
###########

function extractData
{
perl -ne 'BEGIN { $/="\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*" } chomp; print if /error_field/i' $recent_log | \
awk '(match($1,/^cccardcode|^date/)) {printf "%s;",$3};(match($1,/^file_amount/)) {printf "%s\n",$3}' | tr -d " " | tr -d "\015" | \
awk -F";" '{
        printf "%s;", $1
        printf "%s;", $2
}
$3 ~ /[0-9]+\.00+/ {
        printf "%.0f\n", $3
}
$3 ~ /[0-9]+\.[1-9]0+/ {
        printf "%.1f\n", $3
}
$3 ~ /[0-9]+\.[0-9][1-9]0+/ {
        printf "%.2f\n", $3
}'
}

function doCSVSQL
{
sqlplus -s user/pass@SID >>report_dettaglio_$(date +"%Y%m%d").csv << EOF
@do_csv.sql
exit;
EOF
}


##########
#PRECHECK#
##########

cd /LOGPATH
recent_log=$(ls PIHCCARD*.LOG | tail -1)
go=$(cat $recent_log | grep error_field | wc -l)

if [ $go -eq 0 ]
then
echo "Nessuno scarto trovato nei LOG. Esco."
break
else

######
#MAIN#
######

rm -f tmp_data.txt
extractData > tmp_data.txt

cat tmp_data.txt | while read line
do

cdc="'$(echo $line|awk -F";" '{print $1}')'"
emiss="'$(echo $line|awk -F";" '{print $2}')'"
importo="'$(echo $line|awk -F";" '{print $3}')'"
cdc_cut=$(echo $cdc | cut -c14-17)


sqlplus -s user/pass@SID >result.txt << EOF
set pagesize 32000
set linesize 500
set heading off
set feedback off
select /*+ PARALLEL(customer 2) PARALLEL(orderhdr 2) PARALLEL(tickler_records 2) USE_HASH(customer) */
c.customer_id
from customer c,orderhdr o,tickler_records t
where c.customer_id=o.customer_id
and o.customer_id=t.customer_id
and o.ohinvamt=$importo
and o.ohentdate=to_date($emiss,'DDMMYY')
and (t.long_description like '%Carta di credito%$cdc_cut%'
or long_description like '%Cambio Metodo di Pagamento%$cdc_cut%'
or long_description like '%Carta di Credito%$cdc_cut%');
exit;
EOF

cat result.txt | while read customer_id
do doCSVSQL
rm -f result.txt
done

done

# 2  
Old 12-11-2012
Hi.

And the query works on its own in SQLPlus?
# 3  
Old 12-11-2012
Quote:
Originally Posted by Scott
Hi.

And the query works on its own in SQLPlus?
Hi Scott
Yep Smilie
I tried only the SQL bit and it spooled just fine.
# 4  
Old 12-11-2012
By "spool" you mean by virtue of the ">result.txt", not the Oracle SPOOL command, right? Since it's not there.

Is there any reason you remove the file in your while-loop?

Code:
cat result.txt | while read customer_id
do doCSVSQL
rm -f result.txt
done

done ???

# 5  
Old 12-11-2012
Ah, OK. I see the other while loop :blind-man: Smilie
# 6  
Old 12-11-2012
Quote:
Originally Posted by Scott
By "spool" you mean by virtue of the ">result.txt", not the Oracle SPOOL command, right? Since it's not there.

Is there any reason you remove the file in your while-loop?
Yes, the "spool" would be the result.txt, sorry for the mislead :P
I remove it because of the second function doCSVSQL. Since it's another SQL file it doesn't go well with multiple records, so I delete and create it again to only have 1 record inside it.

And yes, I know it's brutal :P I tried making a variable like this:

Code:
customer_id=$(-query)

But I got a "Line too long" error.
Again, I'm sorry if this is a mess, but thanks Smilie
I'm gonna try and remove the delete part and the second function right now and see how it works.
# 7  
Old 12-11-2012
Can you say in simple terms exactly what you expect to have at the end? There's stuff in the code you've posted that doesn't tie in anywhere (such as the SQL in @do_csv.sql, for example).
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Spooling File to My Desktop From Back-end using shell script

Hello all, I am trying to spool a SQL query output file from back-end to desktop in a certain path but it didn't work,the query writes the output in a file in the same directory at the back-end. note : i use the same query in sql developper and file was created in the desired path fine code... (1 Reply)
Discussion started by: bmaksoud
1 Replies

2. UNIX for Beginners Questions & Answers

Script not spooling in the designated file.

Hi, I need to write a script that will run a simple select count(*) query and sends the result of that query to me via email. Here's what I already have. #!/bin/ksh ###################################################################### # File Name : counts.sh # Created : 2019/27/19... (1 Reply)
Discussion started by: clef
1 Replies

3. UNIX for Dummies Questions & Answers

Spooling data from the database in .csv file with boundary

Hi Guys, Another questions to the genius over here. I have spool the dataf from the database into a .csv file. But can it be possible to have all the rows and column with the boundaries..for example the .csv file which i have is as below: 20140327 BU 9A 3 20140327 SPACE 9A 3 20140327... (8 Replies)
Discussion started by: Pramod_009
8 Replies

4. Shell Programming and Scripting

Script to write result to a file

Hello, How can I run this script every 1 hour and save its result to result.txt ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}' Regards Shaan (5 Replies)
Discussion started by: Shaan_Shaan
5 Replies

5. Shell Programming and Scripting

Spooling file to excel

Hi , Im spooling file from oracle to csv using shell script. Below is the code im using.. The o/p is not coming in right format.. Please help me out in this.. O/p is coming as header till batch id ,im not able to see date_stored,type,type1.. Please any one can give me some suggestion ... (1 Reply)
Discussion started by: jkumsi
1 Replies

6. UNIX for Dummies Questions & Answers

Creating a Tar file while files are spooling

Hi I have done a search for this but couldn't find much on it. I am creating a tar file with the command below tar cvf /export/home/user/backup/*Will this is being created I have a job spooling to 5 texts files in the following directory /export/home/user/backup/STATS/ The tar files... (1 Reply)
Discussion started by: sgarvan
1 Replies

7. Shell Programming and Scripting

shell script result to file

Since I'm not an expert in shell scripting, I have question on sending script result to file. I have script like this... if condition=0: then echo "service is not running" | mail -s "Server Status" uname@companyname fi sleep 10 if configtion=1: then echo "service is not running" | mail -s... (3 Replies)
Discussion started by: s_linux
3 Replies

8. UNIX for Dummies Questions & Answers

Option in sql script to include column headers when spooling file to .csv format

Can anyone help me how to include COLUMN HEADER when spooling file to .CSV format through SQL statement. Thanks, Akbar (4 Replies)
Discussion started by: s1a2m3
4 Replies

9. Shell Programming and Scripting

spooling through shell script

Hi, I want to spool the output from a .sql file to a .txt file through shell script. the contents of .sql are: spool /arboru02/scripts/customer_profile_def.txt select profile_id ||','|| account_no from customer_profile_def; spool off exit and shell scrip is like: #!/bin/sh... (9 Replies)
Discussion started by: ss_ss
9 Replies

10. UNIX for Dummies Questions & Answers

Spooling a log file with timestamp

Hi From shell script i am invoking sqlplus to connect to oracle database and then i spool a csv file as with output. What i want to do is to change the file name with timestamp on it so after spooling finish shell script change file name with time stamp. can someone help me to do that . Thanks... (2 Replies)
Discussion started by: ukadmin
2 Replies
Login or Register to Ask a Question