Sponsored Content
Top Forums Shell Programming and Scripting Help Needed: UNIX shell variables to store Oracle table records Post 302959109 by venkat_reddy on Wednesday 28th of October 2015 05:34:08 PM
Old 10-28-2015
Help Needed: UNIX shell variables to store Oracle table records

Hello Folks,

I'm working on a requirement to automate the process of generating report(csv file) using metadata info stored in an Oracle table and E-mail it to respective people.

Meta data table:

Code:
Report_ID,Report_SUB_ID,Report_DB,Report_SQL,Report_to_email_Id

1,1,DEV,'select * From emp', xyz@abc.com
1,2,DEV,'select * From dept',abc@xyz.com
1,3,DEV,'select * From sal',abc@qwr.com
2,1,UAT,'select * From emp1', test@test.com
2,2,UAT,'select * From dept1', yyy@xxx.com
3,1,PRD,select * From xyz', ppp@mmm.com

To implement this I'm planning to store the metadata entries into Unix shell variables and create a loop and process each record(report_SUB_ID,DB, SQL etc) in the loop indivudally.
Then,planning to execute each SQL in the respective DB and spool the output of the SQL query to a csv file on the unix server and then attach it and send it to the respective user.

Can you please advise if my approach is right ? If not , please advise whats the best possible way to achieve this?

If yes , please suggest what type of shell variables I have to create and how can I looop through these values.

Thanks in Advance

Regards,
Venkat

Last edited by Don Cragun; 10-29-2015 at 04:27 PM.. Reason: Add CODE tags.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Store return code of shell script in oracle table

Hi friends, I have to do the following things : 1) there should be a shell script returning the returning the return code of the script. and i have to add some more details like on which machine is has run , at what time and other details and then using plsql i have to add a row to Oracle... (3 Replies)
Discussion started by: sveera
3 Replies

2. Shell Programming and Scripting

run shell script from oracle store procedure

hi, this is urgent..can i run a shell script from store procedure without using java. (8 Replies)
Discussion started by: arnabb4u
8 Replies

3. Shell Programming and Scripting

Unix call to Oracle PL/SQL pkg/store.proc

HI, I'm trying to get this right, please can you help. In my unix korn shell script, I call an oracle stored proc within a package and I specify 3 parameters, 2 of which are IN OUT parameters (i.e. I expect the stored proc to change them and return them back to me). Does the unix code... (7 Replies)
Discussion started by: csong2
7 Replies

4. UNIX for Advanced & Expert Users

unix script for update or insert records from a file to a oracle table

Hi, I have delimited file(|). Sample data: 1|name|50009|DS24|0|12 2|name|30009|DS24|0|13 3|name|20409|DS24|0|14 4|name|20009|DS24|0|15 5|name|10009|DS24|0|16 I want to load this data into a oracle table (update and insert) Please help me the commands and also... (1 Reply)
Discussion started by: unihp1
1 Replies

5. Shell Programming and Scripting

How to store contents of a command in array of variables in shell script?

I want to store contents of command dir in array of variables For eg: dir contents are command d2 demovi~ file inven java new untitled folder d1 demovi er1 filename inven~ myfiles ubuntu desktop xmms ----------------------------------- I... (3 Replies)
Discussion started by: netresearch
3 Replies

6. Shell Programming and Scripting

[Doubt] How can I store numbers less than 1? Shell variables

Hi everyone, I am having some problems with my scripts so I hope you could help me. I am trying to store the result of a division in a variable in tcshell but I have the problem that if: For example, dividing 2/100 the result is 0.02 but if I store that I have "0". How can I have 0.02... (8 Replies)
Discussion started by: Bloody
8 Replies

7. Shell Programming and Scripting

Help needed in retreiving records from Oracle

Hello, I am new to UNIX. My Requirement: Need to connect to Oracle database from UNIX and execute an SELECT statement and store the records in a flatfile of Comma delimiter. What I have Succeeded: I was able to connect to Oracle from UNIX. Problem: I cannot fetch multiple... (3 Replies)
Discussion started by: arunvasu2
3 Replies

8. Shell Programming and Scripting

Shell script to read a file and store in variables

I have a input file like this. Sample.txt 30 | TXDatacenter | TXBackupDC 10 | UKDatacenter | UKBackupDC 0 | NLDatacenter | NLBackupDC ...... ...... ...... I need to get these values in different variables like this. Load1=30 PriCenter1=TXDatacenter... (5 Replies)
Discussion started by: Visha
5 Replies

9. Linux

How to store count of multiple queries in variables in a shell script?

how to store the count of queries in variables inside a filein shell script my output : filename ------- variable1=result from 1st query variable2=result from 2nd query . . . . (3 Replies)
Discussion started by: sanvel
3 Replies

10. Shell Programming and Scripting

UNIX Script required for count the records in table

Hi Friends, I looking for the script for the count of the records in table. and then it's containg the zero records then should get abort. and should notify us through mail. Can you please help me out in this area i am lacking. (5 Replies)
Discussion started by: victory
5 Replies
DBIx::Simple::Examples(3)				User Contributed Perl Documentation				 DBIx::Simple::Examples(3)

NAME
DBIx::Simple::Examples - Examples of how to use DBIx::Simple DESCRIPTION
DBIx::Simple provides a simplified interface to DBI, Perl's powerful database module. EXAMPLES
General #!/usr/bin/perl -w use strict; use DBIx::Simple; # Instant database with DBD::SQLite my $db = DBIx::Simple->connect('dbi:SQLite:dbname=file.dat') or die DBIx::Simple->error; # Connecting to a MySQL database my $db = DBIx::Simple->connect( 'DBI:mysql:database=test', # DBI source specification 'test', 'test', # Username and password { RaiseError => 1 } # Additional options ); # Using an existing database handle my $db = DBIx::Simple->connect($dbh); # Abstracted example: $db->query($query, @variables)->what_you_want; $db->commit or die $db->error; Simple Queries $db->query('DELETE FROM foo WHERE id = ?', $id) or die $db->error; for (1..100) { $db->query( 'INSERT INTO randomvalues VALUES (?, ?)', int rand(10), int rand(10) ) or die $db->error; } $db->query( 'INSERT INTO sometable VALUES (??)', $first, $second, $third, $fourth, $fifth, $sixth ); # (??) is expanded to (?, ?, ?, ?, ?, ?) automatically Single row queries my ($two) = $db->query('SELECT 1 + 1')->list; my ($three, $four) = $db->query('SELECT 3, 2 + 2')->list; my ($name, $email) = $db->query( 'SELECT name, email FROM people WHERE email = ? LIMIT 1', $mail )->list; Or, more efficiently: $db->query('SELECT 1 + 1')->into(my $two); $db->query('SELECT 3, 2 + 2')->into(my ($three, $four)); $db->query( 'SELECT name, email FROM people WHERE email = ? LIMIT 1', $mail )->into(my ($name, $email)); Fetching all rows in one go One big flattened list (primarily for single column queries) my @names = $db->query('SELECT name FROM people WHERE id > 5')->flat; Rows as array references for my $row ($db->query('SELECT name, email FROM people')->arrays) { print "Name: $row->[0], Email: $row->[1] "; } Rows as hash references for my $row ($db->query('SELECT name, email FROM people')->hashes) { print "Name: $row->{name}, Email: $row->{email} "; } Fetching one row at a time Rows into separate variables { my $result = $db->query('SELECT name, email FROM people'); $result->bind(my ($name, $email)); while ($result->fetch) { print "Name: $name, Email: $email "; } } or: { my $result = $db->query('SELECT name, email FROM people'); while ($result->into(my ($name, $email))) { print "Name: $name, Email: $email "; } } Rows as lists { my $result = $db->query('SELECT name, email FROM people'); while (my @row = $result->list) { print "Name: $row[0], Email: $row[1] "; } } Rows as array references { my $result = $db->query('SELECT name, email FROM people'); while (my $row = $result->array) { print "Name: $row->[0], Email: $row->[1] "; } } Rows as hash references { my $result = $db->query('SELECT name, email FROM people'); while (my $row = $result->hash) { print "Name: $row->{name}, Email: $row->{email} "; } } Building maps (also fetching all rows in one go) A hash of hashes my $customers = $db -> query('SELECT id, name, location FROM people') -> map_hashes('id'); # $customers = { $id => { name => $name, location => $location } } A hash of arrays my $customers = $db -> query('SELECT id, name, location FROM people') -> map_arrays(0); # $customers = { $id => [ $name, $location ] } A hash of values (two-column queries) my $names = $db -> query('SELECT id, name FROM people') -> map; # $names = { $id => $name } EXAMPLES WITH SQL
::Interp If you have SQL::Interp installed, you can use the semi-abstracting method "iquery". This works just like "query", but with parts of the query interleaved with the bind arguments, passed as references. You should read SQL::Interp. These examples are not enough to fully understand all the possibilities. The following examples are based on the documentation of SQL::Interp. my $result = $db->iquery('INSERT INTO table', \%item); my $result = $db->iquery('UPDATE table SET', \%item, 'WHERE y <> ', 2); my $result = $db->iquery('DELETE FROM table WHERE y = ', 2); # These two select syntax produce the same result my $result = $db->iquery('SELECT * FROM table WHERE x = ', $s, 'AND y IN', @v); my $result = $db->iquery('SELECT * FROM table WHERE', {x => $s, y => @v}); for ($result->hashes) { ... } Use a syntax highlighting editor for good visual distinction. If you need the helper functions "sql" and "sql_type", you can import them with "use SQL::Interp;" EXAMPLES WITH SQL
::Abstract If you have SQL::Abstract installed, you can use the abstracting methods "select", "insert", "update", "delete". These work like "query", but instead of a query and bind arguments, use abstracted arguments. You should read SQL::Abstract. These examples are not enough to fully understand all the possibilities. The SQL::Abstract object is available (writable) through the "abstract" property. The following examples are based on the documentation of SQL::Abstract. Overview If you don't like the defaults, just assign a new object: $db->abstract = SQL::Abstract->new( case => 'lower', cmp => 'like', logic => 'and', convert => 'upper' ); If you don't assign any object, one will be created automatically using the default options. The SQL::Abstract module is loaded on demand. my $result = $db->select($table, @fields, \%where, @order); my $result = $db->insert($table, \%fieldvals || @values); my $result = $db->update($table, \%fieldvals, \%where); my $result = $db->delete($table, \%where); for ($result->hashes) { ... } Complete examples select my @tickets = $db->select( 'tickets', '*', { requestor => 'inna', worker => ['nwiger', 'rcwe', 'sfz'], status => { '!=', 'completed' } } )->hashes; insert If you already have your data as a hash, inserting becomes much easier: $db->insert('people', \%data); Instead of: $db->query( q[ INSERT INTO people (name, phone, address, ...) VALUES (??) ], @data{'name', 'phone', 'address', ... } ); update, delete $db->update( 'tickets', { worker => 'juerd', status => 'completed' }, { id => $id } ) $db->delete('tickets', { id => $id }); where The "where" method is not wrapped directly, because it doesn't generate a query and thus doesn't really have anything to do with the database module. But using the "abstract" property, you can still easily access it: my $where = $db->abstract->where({ foo => $foo }); EXAMPLES WITH DBIx::XHTML_Table If you have DBIx::XHTML_Table installed, you can use the result methods "xto" and "html". You should read DBIx::XHTML_Table. These examples are not enough to fully understand what is going on. When reading that documentation, note that you don't have to pass hash references to DBIx::Simple's methods. It is supported, though. DBIx::XHTML_Table is loaded on demand. Overview To print a simple table, all you have to do is: print $db->query('SELECT * FROM foo')->html; Of course, anything that produces a result object can be used. The same thing using the abstraction method "select" would be: print $db->select('foo', '*')->html; A DBIx::XHTML_Table object can be generated with the "xto" (XHTML_Table Object) method: my $table = $db->query($query)->xto; Passing attributes DBIx::Simple sends the attributes you pass to "html" both to the constructor and the output method. This allows you to specify both HTML attributes (like "bgcolor") and options for XHTML_Table (like "no_ucfirst" and "no_indent") all at once: print $result->html( tr => { bgcolor => [ qw/silver white/ ] }, no_ucfirst => 1 ); Using an XHTML_Table object Not everything can be controlled by passing attributes. For full flexibility, the XHTML_Table object can be used directly: my $table = $db->query($query)->xto( tr => { bgcolor => [ qw/silver white/ ] } ); $table->set_group('client', 1); $table->calc_totals('credit', '%.2f'); print $table->output({ no_ucfirst => 1 }); # note the {}! EXAMPLES WITH Text::Table "$result->text("neat")" Neither neat nor pretty, but useful for debugging. Uses DBI's "neat_list" method. Doesn't display column names. '1', 'Camel', 'mammal' '2', 'Llama', 'mammal' '3', 'Owl', 'bird' '4', 'Juerd', undef "$result->text("table")" Displays a simple table using ASCII lines. id | animal | type ---+--------+------- 1 | Camel | mammal 2 | Llama | mammal 3 | Owl | bird 4 | Juerd | "$result->text("box")" Displays a simple table using ASCII lines, with an outside border. +----+--------+--------+ | id | animal | type | +----+--------+--------+ | 1 | Camel | mammal | | 2 | Llama | mammal | | 3 | Owl | bird | | 4 | Juerd | | +----+--------+--------+ For "table" and "box", you need Anno Siegel's Text::Table module installed. AUTHOR
Juerd Waalboer <juerd@cpan.org> <http://juerd.nl/> SEE ALSO
DBIx::Simple, SQL::Abstract perl v5.16.3 2010-12-03 DBIx::Simple::Examples(3)
All times are GMT -4. The time now is 10:44 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy