Script help


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Script help
# 1  
Old 09-25-2008
Script help

Hi
I want compare my prodution tables with dev tables and list tables if any data length or data type mismatches.I put all ddl statements with 2 different files (one from prod and one from dev).Below script is not working.Any help should be appereciated

Code:
tab1=$1
tab2=$1
 
if [ ! -f $tab1 ] ; then
echo "file1 not exist:$tab1"
fi

if [ ! -f $tab2 ] ; then
echo "file2 not exist:$tab2"
fi

col1=`awk -F" " '/SET TABLE/{print substr($4,(index($4,".")+1))}1'  $tab1 
|egrep -iv 'create|journal|default|index'|awk -F " " '{print $1,$2 }'|awk NF`
 
col2=`awk -F" " '/SET TABLE/{print substr($4,(index($4,".")+1))}1'  $tab2 
|egrep -iv 'create|journal|default|index'|awk -F " " '{print $1,$2 }'|awk NF`
 
tabname=`awk -F" " '/SET TABLE/{print substr($4,(index($4,".")+1))}'`

if [ "$col1 == "$col2" ] ; then 
echo "Tablename "$tabname  is ok
else 
echo "Tablename "$tabname columns  not matches
fi

###

file1.txt

CREATE  TABLE XX1 ,NO FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT
(
Id INTEGER NOT NULL,
Cd CHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
Category_Cd VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
XX_Dt DATE FORMAT 'YYYY-MM-DD' NOT NULL,
Ind CHAR(1) CHARACTER SET LATIN NOT CASESPECIFIC,
XX_Dt1 DATE FORMAT 'YYYY-MM-DD'
);



file2.txt

CREATE  TABLE XX2 ,NO FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT
(
Id char(10) NOT NULL,
Cd CHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
Category_Cd VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
XX_Dt DATE FORMAT 'YYYY-MM-DD' NOT NULL,
Ind CHAR(1) CHARACTER SET LATIN NOT CASESPECIFIC,
XX_Dt1 DATE FORMAT 'YYYY-MM-DD'
);

Thanks
MR
# 2  
Old 09-25-2008
Is this a typo?
Code:
tab1=$1
tab2=$1

Filename is missing here:

Code:
tabname=`awk -F" " '/SET TABLE/{print substr($4,(index($4,".")+1))}' filename`

Regards
# 3  
Old 09-25-2008
Hi
sorry its typo error and missed the filename .

Code:
tab1=$1
tab2=$2

tabname=`awk -F" " '/SET TABLE/{print substr($4,(index($4,".")+1))}'  $tab1`

Thanks,
MR
# 4  
Old 09-26-2008
Hi
Its working but its not giving the status of first table even if difference .


a.sh file1.txt file2.txt

xx1
xx2 is ok


example

Code:
data length of Cd its different from xx1 in both databases ,its not 

file1.txt

CREATE  TABLE XX1 ,NO FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT
(
Id INTEGER NOT NULL,
Cd CHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
Category_Cd VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
XX_Dt DATE FORMAT 'YYYY-MM-DD' NOT NULL,
Ind CHAR(1) CHARACTER SET LATIN NOT CASESPECIFIC,
XX_Dt1 DATE FORMAT 'YYYY-MM-DD'
);
-----------------------------

CREATE  TABLE XX2 ,NO FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT
(
Id INTEGER NOT NULL,
Cd CHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
Category_Cd VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
XX_Dt DATE FORMAT 'YYYY-MM-DD' NOT NULL,
Ind CHAR(1) CHARACTER SET LATIN NOT CASESPECIFIC,
XX_Dt1 DATE FORMAT 'YYYY-MM-DD'
);


file2.txt

CREATE  TABLE XX1 ,NO FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT
(
Id INTEGER NOT NULL,
Cd CHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
Category_Cd VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
XX_Dt DATE FORMAT 'YYYY-MM-DD' NOT NULL,
Ind CHAR(1) CHARACTER SET LATIN NOT CASESPECIFIC,
XX_Dt1 DATE FORMAT 'YYYY-MM-DD'
);
-----------------------------

CREATE  TABLE XX2 ,NO FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT
(
Id INTEGER NOT NULL,
Cd CHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
Category_Cd VARCHAR(5) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
XX_Dt DATE FORMAT 'YYYY-MM-DD' NOT NULL,
Ind CHAR(1) CHARACTER SET LATIN NOT CASESPECIFIC,
XX_Dt1 DATE FORMAT 'YYYY-MM-DD'
);

Thanks,
MR
# 5  
Old 09-26-2008
ummmm did not read all this so i could be off,,, but to save much work just do this.

sdiff file1.txt file2.txt

OR
diff file1.txt file2.txt

OR

sdiff -s -w 150 file1.txt file2.txt



then

man sdiff


did a light go on? or should i have raed this thread to see what it was really about
# 6  
Old 09-27-2008
Quote:
Originally Posted by mohan705
Hi
sorry its typo error and missed the filename .

Code:
tab1=$1
tab2=$2

tabname=`awk -F" " '/SET TABLE/{print substr($4,(index($4,".")+1))}'  $tab1`

Thanks,
MR
Your files don't have any line with "SET TABLE" so your awk command doesn't give any result.
In your script you're grepping for words in lowercase, but remind that grep is case sensitive.

Regards
Login or Register to Ask a Question

Previous Thread | Next Thread

5 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to block first bash script until second bash script script launches web server/site?

I'm new to utilities like socat and netcat and I'm not clear if they will do what I need. I have a "compileDeployStartWebServer.sh" script and a "StartBrowser.sh" script that are started by emacs/elisp at the same time in two different processes. I'm using Cygwin bash on Windows 10. My... (3 Replies)
Discussion started by: siegfried
3 Replies

2. Shell Programming and Scripting

Shell script works fine as a standalone script but not as part of a bigger script

Hello all, I am facing a weird issue while executing a code below - #!/bin/bash cd /wload/baot/home/baotasa0/sandboxes_finance/ext_ukba_bde/pset sh UKBA_publish.sh UKBA 28082015 3 if then echo "Param file conversion for all the areas are completed, please check in your home directory"... (2 Replies)
Discussion started by: ektubbe
2 Replies

3. UNIX for Dummies Questions & Answers

Calling a script from master script to get value from called script

I am trying to call a script(callingscript.sh) from a master script(masterscript.sh) to get string type value from calling script to master script. I have used scripts mentioned below. #masterscript.sh ./callingscript.sh echo $fileExist #callingscript.sh echo "The script is called"... (2 Replies)
Discussion started by: Raj Roy
2 Replies

4. Shell Programming and Scripting

Script will keep checking running status of another script and also restart called script at night

I am using blow script :-- #!/bin/bash FIND=$(ps -elf | grep "snmp_trap.sh" | grep -v grep) #check snmp_trap.sh is running or not if then # echo "process found" exit 0; else echo "process not found" exec /home/Ketan_r /snmp_trap.sh 2>&1 & disown -h ... (1 Reply)
Discussion started by: ketanraut
1 Replies

5. Shell Programming and Scripting

create a shell script that calls another script and and an awk script

Hi guys I have a shell script that executes sql statemets and sends the output to a file.the script takes in parameters executes sql and sends the result to an output file. #!/bin/sh echo " $2 $3 $4 $5 $6 $7 isql -w400 -U$2 -S$5 -P$3 << xxx use $4 go print"**Changes to the table... (0 Replies)
Discussion started by: magikminox
0 Replies
Login or Register to Ask a Question