Try and adapt this new version of my script :
awk '
BEGIN {
fmtI = "%-12s %-12s %-16s %s\n";
fmtNoI = "%-12s %s\n";
print "TABLES"
printf fmtI, "TABLE_NAME", "COLUMN_NAME", "DATATYPE", "";
}
#
# Input file #1
#
NR==FNR {
tbl[$1]=0;
next;
}
#
# Input file #2
#
/ALTER TABLE/ {
tbl_name = $3;
if (tbl_name in tbl) {
getcols = 1
} else {
getcols = 0;
tblNoI[tbl_name] = "";
}
}
getcols != 1 {
next;
}
/ADD CONSTRAINT / {
sub(/.*ADD CONSTRAINT[[:space:]]+/, "");
tblNoI[tbl_name] = tblNoI[tbl_name] "CONSTRAINT " $1;
next;
}
/ADD /,/;[[:space:]]*$/ {
sub(/.*ADD[[:space:]]+\(?[[:space:]]*/, "");
sub(/[,;]*$/, "", $2); sub (/))/, ")", $2);
sub(/[,;)]*$/, "", $3);
name = (tbl_name == prv_tbl_name ? "" : tbl_name);
prv_tbl_name = tbl_name;
null = ($3 ? $3 : "NOT NULL")
printf fmtI, name, $1, $2, null;
}
END {
print "\nNO IMPACT";
printf fmtNoI, "TABLE_NAME", ""
for (t in tblNoI) printf fmtNoI, t, tblNoI[t];
print "";
}
' alisha.nam alisha2.tmp
Input file "name" (alisha.nam):
tbla
tblc
Input file "temp" (alisha2.tmp):
ALTER TABLE tbla
ADD ( cola1 VARCHAR2(11),
cola2 VARCHAR2(12) );
ALTER TABLE tbla ADD CONSTRAINT PK_tbla PRIMARY KEY (cola1);
ALTER TABLE tblb
ADD ( colb1 VARCHAR2(21),
colb2 VARCHAR2(22) );
ALTER TABLE tblb ADD CONSTRAINT PK_tblb PRIMARY KEY (colb1,colb2);
ALTER TABLE tblc ADD CONSTRAINT PK_tblc PRIMARY KEY (colc0);
ALTER TABLE tblc
ADD ( colc1 VARCHAR2(31),
colc2 VARCHAR2(32),
colc3 VARCHAR2(32) );
ALTER TABLE tbld ADD CONSTRAINT PK_tbld PRIMARY KEY (cold0,cold2,cold3);
ALTER TABLE tblc ADD col1 CHAR(3) NULL;
ALTER TABLE tblb ADD col1 CHAR(3) NULL;
ALTER TABLE tbla ADD col1 CHAR(3) NULL;
ALTER TABLE tbld ADD col1 CHAR(3) NULL;
ALTER TABLE tbla ADD col1 CHAR(3) NULL;
output:
TABLES
TABLE_NAME COLUMN_NAME DATATYPE
tbla cola1 VARCHAR2(11) NOT NULL
cola2 VARCHAR2(12) NOT NULL
tblc colc1 VARCHAR2(31) NOT NULL
colc2 VARCHAR2(32) NOT NULL
colc3 VARCHAR2(32) NOT NULL
col1 CHAR(3) NULL
tbla col1 CHAR(3) NULL
col1 CHAR(3) NULL
NO IMPACT
TABLE_NAME
tbld
tbla CONSTRAINT PK_tbla
tblb
tblc CONSTRAINT PK_tblc
Jean-Pierre.