A SQL Loader Script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting A SQL Loader Script
# 1  
Old 04-18-2007
A SQL Loader Script

Hi Guys,

I am looking to develop a SQL Loader script that would bascially allow the user to have a txt file (or such) as an input file containing .sql scripts procedures, triggers, bascially anything against a database that could then be run automatically.

Let me break it down a bit more, what i would like is to have an input file that may be in the format:

@Database
--database details (SID, username, password)
@SQL
--.sql scripts to be run
@Procedures
--procedures to be compilied
@Triggers
--triggers to be compilied

The idea is to make the release procedure more streamlined so we can have an audit trail effectively. So the output of each would be written to a log file with times, details etc.

I really have a couple of questions on this, firstly I know how to read in a file etc, but can anyone suggest the quickest way to parse a file like this perharps into different arrays so that i then know what type of array i am dealing with (i.e. .sql scripts, procedures etc), so that i know what commands to use on sqlldr?

Also does anyone know if there has been something like this done somewere on the web?

I am keen to write one myself as I like doing it so I can learn more about Unix Scripting, my scripting at present is not too bad, but thought it mite be worth while running it past this site incase there are better ways of doing things.

I am not looking for you to provide a complete solution here, just help and advice on a good solution, and perhaps any sites you know that may be useful.

Thanks
# 2  
Old 04-23-2007
Guys,

Quick question on this, hopefully.

I am going to go down the road that i have mentioned above, i.e. having one control file of format:

@database
--connection details
@procedure
--procedures etc
.
.
.
@database
--connection details

Basically my question is could someone give me some hints on how to parse the file so that i can grab all the stuff between (for example) the two @databases. I want to know what i should be loading against one database, and what against the others, if there is more than one @database, as it may be the case that everything has to be done against one database.

Hope that makes sense.
# 3  
Old 04-23-2007
If I understand, you want to create metacode that generates a .ctl on the fly. There have been discussions at various levels about this idea at
www.orafaq.com

There are several examples - search for dynamic control file

To answer your question - you have to use a scripting facility (perl, ksh, etc.), I assume you are. Then you can use patternmatching or regex to find your database name.

A list of all the Oracle sids must live in the tnsnames.ora in the $ORACLE_HOME/network/admin tree. First, you have to parse that file for db names. You have to validate the names anyway, bad name=load failure. Then use the array of names to search for '@' prefixed on all of your possible dbnames.

Our tnanames files all have the sid on a single line by itself, so this works
Code:
#!/bin/ksh
let cnt=0
set -A sidlist
tr -s '[:upper:]'  '[:lower:]' < $ORACLE_HOME/network/admin/tnsnames.ora |\
grep 'sid =' | awk '{print $3}' \
while read sid
do
    sidlist[cnt]=$sid
    let cnt=$cnt+1
done

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to call SQL Loader in shell script?

HI Experts, I am pretty new to scripting and i need to create a perl or shell script which should fetch a file from local directory and insert the data into a table using sql loader. This will be later added to chron job to run daily and fetch all files and load them into the table. Also i... (1 Reply)
Discussion started by: sam1234
1 Replies

2. Homework & Coursework Questions

Write a shell script for SQL loader to load data into a staging table

Hi, I'm new to Linux. I'm working on a database, and need to load data in a database table (which I already created) using shell script. The table has two columns - Acct_number (not nullable) and date (timestamp). I'm not able to write a shell script for that. Can any one help me? ... (3 Replies)
Discussion started by: saisudeep
3 Replies

3. Shell Programming and Scripting

use of sql loader in the script

All, Below is the code written when sql loader loads the data: $ORACLE_EXEC_PATH/sqlldr userid=$user_passwd control=$CNTR_FILES/invoice.ctl log=$LOG_FILES/$INVOICE_FILE.log bad=$ER ROR_FILES/$INVOICE_FILE.bad data=$DATA_FILES/$INVOICE_FILE silent=FEEDBACK direct=false errors=50000 rc=$?... (1 Reply)
Discussion started by: Oracle_User
1 Replies

4. UNIX for Dummies Questions & Answers

SQL loader script - ORACLE environmental variable

I am new in unix.. I am running a sql loader script where I have to specify the data file path but the file name contains spaces in it so giving error multiple arguments I have tried it with "" and '' but does n't work the command is : $ORACLE_HOME/bin/sqlldr... (1 Reply)
Discussion started by: Sandip Dey
1 Replies

5. UNIX for Dummies Questions & Answers

SQL*Loader

HI Experts, We have a ksh file named ldr_empdelta.ksh and it is having the SQL*LOADER script as follows. print "LOAD DATA" > $WEDB_GEN/ldrscan.ctl print "INFILE '"$LED_SCAN"/delta/led_del.dat'" >> $WEDB_GEN/ldrparms.ctl print "TRUNCATE" >> $WEDB_GEN/ldrscan.ctl print "PRESERVE BLANKS" >>... (1 Reply)
Discussion started by: ajaykumarkona
1 Replies

6. Shell Programming and Scripting

Problem in sql loader

Hi Frnds, I wanto load the data thats in data file with comma(,) delimited. it throw this errors SQL*Loader-951: Error calling once/load initialization ORA-00604: error occurred at recursive SQL level 1 ORA-00054: resource busy and acquire with NOWAIT specified Plz look at my file... (3 Replies)
Discussion started by: Gopal_Engg
3 Replies

7. Shell Programming and Scripting

sql loader script

hi all i am new to shell scripting. i have 35 flat files delimited files that i have to load in to a table. i was asked to create a shell script that loads the data into the table... could you please help me if you have a script. Also .. how to create logs files...does my sql... (3 Replies)
Discussion started by: rajesh_tns
3 Replies

8. UNIX for Dummies Questions & Answers

Problem with SQL loader

Hi, I am trying to load the records in a .txt file into the data base using SQL loader. I gave: $ sqlldr user/pass@DB control=filename.ctl log =mylog.log It throwed the following error: SQL*Loader-297: Invalid syntax or bind variable in SQL string for column STATUS. ORA-01756: quoted... (2 Replies)
Discussion started by: risshanth
2 Replies

9. Shell Programming and Scripting

Shell script for accessing a file in the network drive and invoking oracle sql loader

Hi, Please let me know if anybody is having a solution handy for the below tasks... It would be helpful if somebody can resolve my query. I am new to unix and oracle environment and looking for some online reference for completing a task. Task: Check if the network drive exists Check... (0 Replies)
Discussion started by: sayydevara
0 Replies

10. UNIX for Dummies Questions & Answers

problems running a sql loader script

Hi Folks, I have created a number of unix scripts that i can run from the scheduler on a server-side application that we use (Chordiant Marketing Director). All scripts are working except one. This last script is a user load script which first truncates a table and then loads it using a flat... (2 Replies)
Discussion started by: jibbadiah
2 Replies
Login or Register to Ask a Question