Execution problems to call the DB table through UNIX


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Execution problems to call the DB table through UNIX
# 1  
Old 08-23-2017
Execution problems to call the DB table through UNIX

Hi All,

I am beginner to the Unix scripting, i am writing a script to call the DB through Unix script. I have to read the files from the given path and in each file the first column i have to pick up and delete the row in the table based on that column.
Code:
#!/bin/sh
set -x
# Check to see if source file path is given
if [ -z "$1" ]
then
  echo "Usage: Source Path is required in position 1"
  exit 1
else
  SRCFILEPATH=$1
  echo "Source path: $SRCFILEPATH"
fi
# Check to see if the file name pattern is given
if [ -z "$2" ]
then
  echo "Usage: File Name Pattern is required in position 2"
  exit 1
else
  FILENAMEPAT=$2
  echo "File Name Pattern: $FILENAMEPAT"
fi
#Moving to src directory
cd $SRCFILEPATH
pwd

FILECOUNT=`ls "$FILENAMEPAT"*|wc -l`
echo "$FILECOUNT"

if [ "$FILECOUNT" -ge 1 ]
then
    for file in "$FILENAMEPAT"*;
    do
      RECCOUNT=`cat ${file}| wc -l`
      echo "$RECCOUNT"
      if [ "$RECCOUNT" -gt 1 ]
      then
	  #!/bin/sh
      user="GLOBALDATA"
      pass="duVuqi50"
	  Search_Term = $(cut -d'|' -f1 ${file}|sed 1d)
      sqlplus -S $user/$pass <<EOF
      DELETE FROM SEARCH_TERM WHERE SEARCH_TERM_TX=$Search_Term;
      exit;
      EOF
      else
      echo "file has no records to process"
      fi
	done
else
    echo "No files exists with pattern "$FILENAMEPAT" in the path to process"
    exit 1
fi
#End Of Script

I am getting below error and correct me if the script is wrong

Code:
: invalid optionte.sh: line 12: set: -
set: usage: set [--abefhkmnptuvxBCHP] [-o option-name] [arg ...]
'earch_Term_Delete.sh: line 38: syntax error near unexpected token `
'earch_Term_Delete.sh: line 38: `    for file in "$FILENAMEPAT"*;

Thanks in advance!!

Last edited by rbatte1; 08-23-2017 at 08:43 AM.. Reason: Correctted CODE tags
# 2  
Old 08-23-2017
Can you show us the whole output? I would expect it to start with something like this:-
Code:
+ [ -z "yourinputparm1" ]
+ SRCFILEPATH=yourinputparm1
+ echo "Source path: yourinputparm1"
Source path: yourinputparm1

Without seeing how far it gets, it will be difficult to spot the problem.

Can you confirm if the parameters contain any embedded spaces or other unusual characters?

I also notice that your quoting might be a little awry, but I don't think you've got that far yet.

What else is in the current directory when you run this? It might be that a wild-card character is getting misinterpreted because of misplaced quoting.



Thanks, in advance,
Robin
# 3  
Old 08-23-2017
Thanks Robin!!

I was also expecting the same out put as you quoted, but i have posted the whole output. Tht's where i was also confused. Could you please correct the script for others.
# 4  
Old 08-23-2017
Two comments:
- the error msgs and the script seem not to coincide: the line numbers given don't show the commands cited.
- somewhere in the script or its data, <CR> (\r, 0x0D, ^M) characters seem to screw up the CLI. How did you create the script / the data?
# 5  
Old 08-23-2017
Thanks RudiC!!
I have modified the script little bit, now its failing in the DB connection part.I am able to connect to the DB through UNIX when i run the only DB script part(in another script) but i am unable to execute that in the entire script,Please look into the code and correct me
Code:
#!/bin/sh
set -x
# Check to see if source file path is given
if [ -z "$1" ]
then
  echo "Usage: Source Path is required in position 1"
  exit 1
else
  SRCFILEPATH=$1
  echo "Source path: $SRCFILEPATH"
fi
# Check to see if the file name pattern is given
if [ -z "$2" ]
then
  echo "Usage: File Name Pattern is required in position 2"
  exit 1
else
  FILENAMEPAT=$2
  echo "File Name Pattern: $FILENAMEPAT"
fi
#Moving to src directory
cd $SRCFILEPATH
pwd
FILECOUNT=`ls *"$FILENAMEPAT"*|wc -l`
echo $FILECOUNT
   for file in "$FILENAMEPAT"*;
   do
   if [ "$FILECOUNT" -gt 1 ]
   then
   user="GLOBALDATA"
   pass="duVuqi50"
   ServiceName="xxxx"
   sqlplus -S $user/$pass@ServiceName <<_EOF_
      SELECT * FROM SEARCH_TERM ;
      exit;
      _EOF_
      else
      echo "file has no records to process"
      exit 1
      fi
   done
#End of Script

Error I am getting
Code:
etluser@avocado1:/var/local/ei/etl/Scripts>sh test_2.sh var/local/ei/etl/Scripts Search_Term
+ '[' -z var/local/ei/etl/Scripts ']'
+ SRCFILEPATH=var/local/ei/etl/Scripts
+ echo 'Source path: var/local/ei/etl/Scripts'
Source path: var/local/ei/etl/Scripts
+ '[' -z Search_Term ']'
+ FILENAMEPAT=Search_Term
+ echo 'File Name Pattern: Search_Term'
File Name Pattern: Search_Term
+ cd var/local/ei/etl/Scripts
test_2.sh: line 32: cd: var/local/ei/etl/Scripts: No such file or directory
+ pwd
/var/local/ei/etl/Scripts
++ wc -l
++ ls Search_Term_Delete.sh Search_Term_Manual.txt
+ FILECOUNT=2
+ echo 2
2
test_2.sh: line 52: warning: here-document at line 43 delimited by end-of-file (wanted `_EOF_')
test_2.sh: line 53: syntax error: unexpected end of file


Moderator's Comments:
Mod Comment Please use CODE tags for data as well, as required by forum rules!

Last edited by RudiC; 08-23-2017 at 12:00 PM.. Reason: Added CODE tags.
# 6  
Old 08-23-2017
Now this is a totally different situation - the errors mentioned in post#1 have disappeared. Is this by chance or did you correct / modify anything?

The error shown occurs because in the here document as used the shell is missing the delimiter which it expects at the beginning of the line. To deploy an indented delimiter, c.f. man bash:
Quote:
If the redirection operator is <<-, then all leading tab characters are stripped from input lines and the line containing delimiter. This allows here-documents within shell scripts to be indented in a natural fashion.
# 7  
Old 08-23-2017
Thanks RudiC!!

I have stripped the leading delimiters and now the script is working fine. Thanks for your suggestion.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Execution problems

How to find a word in a directory which contains many files? i just want to count how many such words are present in all the files? This is the code which i tried for a single file echo "Enter the file name:" read file echo "Enter the word to search:" read word if then echo "The count... (4 Replies)
Discussion started by: Meeran Rizvi
4 Replies

2. Solaris

System call to get the routing table

I want to implement a feature in my project where I want to attach the virtual IP on the interface present at the top in Routing table. I know the command to print the routing table, its "netstat -r". But I need a system call, so that I don't have to go for parsing . Can someone please provide any... (1 Reply)
Discussion started by: amitanshu.verma
1 Replies

3. UNIX for Dummies Questions & Answers

Execution Problems with UNIX.

Hi Team, I created one file like tst.pl, it contains #!/usr/bin/perl use Spreadsheet::ParseExcel; During execution it's showing error like use: command not found. Pleast let me suggest how to use this perl menthods in Unix. Thanks in Advance, Reards, Harris (5 Replies)
Discussion started by: harris
5 Replies

4. Shell Programming and Scripting

Execution problems with sed

Hi,I confused how to use sed to deal with big file. example: the big file have some different urls just with filename. how can i use sed to fetch url except file name and replace to other urls with filename? thanks!!! (11 Replies)
Discussion started by: hshzh359
11 Replies

5. Shell Programming and Scripting

Problems in execution of sqlscript in unix

I am new to unix and trying to execute sql script from unix. I have function already in database and trying to execute it from Cygwin unix and getting stuck. Can someone guide me where I wrote the shell script wrong sqlplus -s scott/tiger declare a number:=3; b number:=4; c number; d... (2 Replies)
Discussion started by: pyerragudi
2 Replies

6. Shell Programming and Scripting

Execution Problems

this my source file ************* fixed *************** Begin equipmentId : d9 processor : fox number : bhhhhhh Variable # 1: Id : 100 Type : 9 nType : s gType : 5f mType : 4 LField : England DataField : london Length ... (6 Replies)
Discussion started by: teefa
6 Replies

7. Shell Programming and Scripting

Execution Problems!!

i have been working on this for a about 12 hours today say's end of file un expected any idea's using the bourne shell and its driving me nuts worked fine in bash but prof says make it work in bourne and good luck worth 13% any help would be awesome #!/bin/sh trap "rm mnt2/source/tmp/* 2>... (1 Reply)
Discussion started by: mrhiab
1 Replies

8. Programming

Problem with execution of fork system call if i use \n

hi all, i tried the following source codes: fork1.c: main() { printf("demo of fork\n"); fork(); printf("hello"); } output: demo of fork hello hello fork2.c: main() (3 Replies)
Discussion started by: pnirmala
3 Replies

9. IP Networking

any system call in unix to access ip routing table

hi is there any system call by which ip routing table can be accessed. (1 Reply)
Discussion started by: vinodkumar
1 Replies
Login or Register to Ask a Question