Connection to Oracle data and dump text file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Connection to Oracle data and dump text file
# 1  
Old 03-07-2013
Connection to Oracle data and dump text file

Hi for all!

I need for my job one shell script very concrete about connection to oracle databases and writing to text file.
Well I tell you:

1.- I must read a file as parameter from linux interface:
> example.sh fileToRead

2.-I must read line to line in "fileToRead" and take a specific value for each line:
0000000#12516654066#654654654564#xx/xx/xxxx#xx/xx/xxxx
0000000#12901548932#545464654656#//#xx/xx/xxxx
0000000#64654687434#564849849879#//#xx/xx/xxxx

3.- For each value I must call a fileA.sql make a query with this value:

I have a fileA.sql ==>

SELECT * FROM hello
WHERE hello.num = 'żż???'

4.- And the last is to dump the results in a text file or a .dat


My shell script is this, so I know that it´s wrong and incomplete:
Code:
#!/bin/bash
if [ $# -ne 2 ]
then
  exit 1
else
	for linea in $1
	do 
		telefono=`echo $linea | cut -d"#" -f 3`
		server=`echo $STRING |cut -d '#' -f1`
		user=`echo $STRING |cut -d '#' -f2`
		password=`echo $STRING |cut -d '#' -f3`
		sqlplus -s $user/$PASSWORD @$xxxxxxxxxxx/xxxxxxxxxxx.sql >> $xxxxxxxx/xxxxxx.dat
	done
fi

Thanks for all and greetings!!!

Moderator's Comments:
Mod Comment Please use next time code tags for your code and data

Last edited by vbe; 03-07-2013 at 11:55 AM.. Reason: code tags
# 2  
Old 03-07-2013
Hi, it's a heavy problem. This is only a sketch, the code should be more or less like this:
Code:
#!/bin/bash
if [ $# -ne 1 ]
then
  exit 1
else
        while read linea
        do
                telefono=`echo $linea | cut -d"#" -f3`
                server=`echo $linea |cut -d '#' -f1`
                user=`echo $linea |cut -d '#' -f2`
                password=`echo $linea |cut -d '#' -f3`
                sqlplus -s $user/$password @$xxxxxxxxxxx/xxxxxxxxxxx.sql $telefono >> $xxxxxxxx/xxxxxx.dat
        done < $1
fi

and the sql file is like:
Code:
SELECT * FROM hello WHERE hello.num = '&1'

# 3  
Old 03-07-2013
Instead of connecting to DB for each entry in the file, you can construct the list of entry to query and then finally query the database.

Here is an example:
Code:
qnum="("

while IFS="#" read f1 f2 f3 skip
do
        qnum="${qnum}'$f3',"
done < fileToRead

qnum="${qnum})"

qnum=$( echo "$qnum" | sed 's/,)$/)/' )               # remove trailing comma

sqlplus -s $user/$PASSWORD << EOF >> xxxxxx.dat
set echo off head off feed off pagesize 0 trimspool on linesize 1000
select * FROM hello
WHERE hello.num in ${qnum};
exit
EOF

# 4  
Old 03-08-2013
Hello again and thanks for yours replies.

I continue with this today. I was looking yours answers and I built this:

FILE.SH

Code:
#!/bin/bash

#If the number of variables is two leaves
if [ $# -ne 2 ]
then
  exit 1
else
    #read row by row in the parameter file
    for linea in $1
    do 
        telefono=`echo $linea | cut -d"#" -f 3`
        #declares an array to store all the variables of each of the lines in a file
        set -A numeros_telefonos $telefono
    done

    #Connect the database
     ==> żżżż?????
    
    #for each phone number is found in the corresponding table and dumps the contents in its corresponding output file
    for i in ${numeros_telefonos[*]}
    do 
        #name the file. sql and dump the information to an output file
        ==> żżż????
        ==> żżżfich_dat=${i}???
        
    done 
#fin del if de entrada 
fi

QUERY.SQL

Code:
SPOOL tramiT.dat
SELECT * FROM hello WHERE  xxx = '&1' 
SPOOL OFF;
/
QUIT;


Last edited by radoulov; 03-12-2013 at 06:14 PM..
# 5  
Old 03-08-2013
Hi, in your code there are some errors: this code mybe useful for you.

First create a bash
Code:
#!/bin/bash
# populate the numeros_telefonos array with all telephon numbers
for linea in $( cat $1 )
do
telefono=`echo $linea | cut -d"#" -f 3`
numeros_telefonos=("${numeros_telefonos[@]}" "$telefono")
done

#loop on array
for i in ${numeros_telefonos[@]}
do
#for each entry in array execute file.sql with telephon number as parameter
sqlplus -L -s user/password@server @ file.sql $i >> tramiT.dat
done

in the sql file:
Code:
set ver off
set heading off
set pause off
SET FEEDBACK  OFF
SET ECHO      OFF
SET TERM      ON
SET TRIMOUT   ON
SET TRIMSPOOL ON
SET PAGESIZE 0
SET linesize 500
SELECT * FROM hello WHERE xxx = '&1';
QUIT;

then execute the bash, passing as first parameter the file: hope I helped you.
If this works try also the bipinajith solution, that result more fast, but not applicable if the list is very long.
# 6  
Old 03-12-2013
Code:
#!/bin/ksh
if [ $# -ne 1 ]
then
echo "SALIDA FORZADA"
  exit 1
else
  for linea in $(cat $1) 
  do
     telefonos=`echo $linea | cut -d"#" -f 3`
     numeros_telefonos[$i]=$telefonos
  done 
  #loop on array
  for i in ${numeros_telefonos[@]}
 do
 #for each entry in array execute file.sql with telephon number as parameter
     sqlplus user/pass @file.sql $i >> tramiT.dat
        done
fi

==> I tried and the result is not very good for me because my $1 it´s a file about 1.000.000 lines and I need open the database out of the "for".
==> I woould like open my database here:
Code:
    sqlplus user/pass
        #loop on array
        for i in ${numeros_telefonos[@]}
        do
            #for each entry in array execute file.sql with telephon number as parameter
             @file.sql $i >> tramiT.dat
        done

but this is a problem!!!

THANKS FOR ALL ... and I am sorry for need so helping.

See you!!

Last edited by radoulov; 03-12-2013 at 06:14 PM..
# 7  
Old 03-12-2013
Ok, how about this idea?

1) Read the file called "file_to_read", extract the data, generate the query with the "IN" operator and redirect it to a file called "file.sql"

2) Connect to sqlplus and run the file "file.sql".

That way, you do not hold the entire query in a shell variable - you save it in a file.

My dummy Oracle table called "hello" looks like this:

Code:
SQL>
SQL> select * from hello;

         X Y
---------- --------------------
         1 Str - 1
         2 Str - 2
         3 Str - 3
         4 Str - 4
         5 Str - 5
         6 Str - 6
         7 Str - 7
         8 Str - 8
         9 Str - 9
        10 Str - 10

10 rows selected.

SQL>
SQL>

On the Linux filesystem, the files look like this -

Code:
$
$
$ cat -n file_to_read
     1  00#AA#1#xx
     2  00#AA#2#xx
     3  00#AA#3#xx
     4  00#AA#4#xx
     5  00#AA#5#xx
     6  00#AA#6#xx
$
$
$ cat -n example.sh
     1  #!/usr/bin/bash
     2  (
     3    echo "select * from hello where x in ("
     4    awk -F# '{ x = NR == 1 ? "" : ","; print x, "'\''"$3"'\''" }' file_to_read
     5    echo ");"
     6  ) > file.sql
     7
     8  sqlplus -s test/test <<EOF > tramit.dat
     9  set feed off timing off
    10  @file.sql
    11  exit
    12  EOF
$
$

When the shell script "example.sh" runs, it first creates "file.sql" which is then used to query the Oracle table and redirect the output to "tramit.dat".

Code:
$
$
$ ./example.sh
$
$ cat file.sql
select * from hello where x in (
 '1'
, '2'
, '3'
, '4'
, '5'
, '6'
);
$
$
$ cat tramit.dat

         X Y
---------- --------------------
         1 Str - 1
         2 Str - 2
         3 Str - 3
         4 Str - 4
         5 Str - 5
         6 Str - 6
$
$

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to Dump data into CSV file which is Separate by <tab>?

Dear Team, please help me to solve this problem using Linux command. I want to dump this data into an excel sheet, Suppose I have a string like: ABC PQR XYZ ASD then I expect output as a ABC XYZ PQR ASD (3 Replies)
Discussion started by: Shubham1182
3 Replies

2. Red Hat

CPU Usage statistics Dump in a text file over a period of time

I am facing issue related to performance of one customized application running on RHEL 5.9. The application stalls for some unknown reason that I need to track. For that I require some tool or shell scripts that can monitor the CPU usage statistics (what we get in TOP or in more detail by other... (6 Replies)
Discussion started by: Anjan Ganguly
6 Replies

3. Homework & Coursework Questions

Oracle dump file (del format) import into db2

1. The problem statement, all variables and given/known data: are the oracle dump files compatible to direct import into db2? I already tried many times but it always truncated results. anyone can help/ advice or suggest? 2. Relevant commands, code, scripts, algorithms: exp... (3 Replies)
Discussion started by: Sonny_103024
3 Replies

4. Shell Programming and Scripting

Read Oracle connection details from a configuration file

Hi, Is it possible to pass oracle connection information from a configuration file and use that to connect to oracle database in my unix shell scripts. Following is the scenario: (1) I would like to save oracle connection string details in a configuration file (ex., dbconfig.txt) (2) from my... (6 Replies)
Discussion started by: sudhakaratp
6 Replies

5. AIX

Issue while importing Oracle Dump File on AIX 5.3

Hi All, I am facing one problem related to importing Oracle Dump file. We have two different version of AIX boxes with oracle (version 10.2.0.4.0) installed. On one AIX box (version 6.1) we are creating oracle dump file (*.dmp) using oracle exp utility and importing it onto another AIX box... (1 Reply)
Discussion started by: gunjan_thakur
1 Replies

6. UNIX and Linux Applications

How to import and dump file to remote Oracle server?

Hi All, I have a linux centos instance which has a dump file. I need to import the dump file to the oracle server which is located at some remote location. I have installed the oracle client on my machine and I am able to connect to the remote oracle server. Now how to import the dump to the... (3 Replies)
Discussion started by: Palak Sharma
3 Replies

7. Shell Programming and Scripting

load a data from text file into a oracle table

Hi all, I have a data like, 0,R001,2,D this wants to be loaded into a oracle database table. Pl let me know how this has to be done. Thanks in advance (2 Replies)
Discussion started by: raji35
2 Replies

8. Shell Programming and Scripting

Need Shell Script to upload data from Text file to Oracle database

Hi Does any one have any idea on uploading the data using Unix Shell script from text file to Oracle database. Requirement:- 1. Need to connect to Oracle database from Unix Shell script. 2. Need to pick Text file from some location on Unix Box. 3. Need to upload the data from text file to... (6 Replies)
Discussion started by: chandrashekharj
6 Replies

9. UNIX for Dummies Questions & Answers

Compile and dump errors to a text file

Hi there, I want to compile a program and dump errors to a text file. How could I do so..? Thanks for reading and thanks in advance!!! (6 Replies)
Discussion started by: starstarting
6 Replies
Login or Register to Ask a Question