Appendix B. parseSQL.pl


The following PERL program will parse the output of the SQL snapshot and convert the information to comma-delimited format so that it can be imported into a spreadsheet.

 #!/usr/local/bin/perl -w #!/usr/bin/perl -w #use English; #================================================================== # # parseSQL.pl # # Parses a Dynamic SQL snapshot, outputs the report lines in delimited # ascii format so that is can be read into a spread sheet # for analysis and sorting of the output. # # USAGE: # parseSQL.pl input-file "string to start a new row in the output file" # match_character output-file # # e.g. parseSQL.pl dynsql.out "^ Number of executions" = > temp.out # The above commands will open and parse the file dynsql.out # and write the information on the right side of the '=' # and write a new line each time it finds "^ Number of executions" # # example command # perl parseSQL.pl sql.snap "^ Number of executions" = > temp.txt # #================================================================== if ( $#ARGV < 2 )    {      die "For usage info - Read the comments at the top of the source file\n\n";    } my $file = $ARGV[0]; my $filetmp = $file . ".temp-file1"; open (FILE,$file)  die "Cannot read from $file"; open (TMP, ">$filetmp")  die "Cannot write to $filetmp\n"; my $counter = 0; #print $ARGV[1]; $title = ""; $count=0; while (<FILE>) {    #$counter++ if s/=/x/gi;    chomp;    if ( m/$ARGV[1]/gi )    {       $count = $count + 1;       if ($count > 0 )          {print TMP "\n";}    }    $temppos = index($_, $ARGV[2]);    #print  TMP "\n$_\n";    @words = split(/$ARGV[2]/, $_);    #if ($#words >= 1)    if ($temppos >= 1)    {       if ($count == 1)       {           grep(s/ *$\t\n//, $words[0]);           grep(s/^ *\t\n//, $words[0]);           $title = $title . $words[0] . "\t";       }       #print TMP "$words[1]\t";       #print  TMP "\n$_\n";       $temps = substr($_, $temppos+1);       print TMP "$temps\t";    }    else    {      #print "\nstart\n" ;    } } print "$title\n"; close TMP; open (TMP, "<$filetmp")  die "Cannot read from $filetmp\n"; while (<TMP>) {    print $_; } 


Advanced DBA Certification Guide and Reference for DB2 UDB v8 for Linux, Unix and Windows
Advanced DBA Certification Guide and Reference for DB2 Universal Database v8 for Linux, UNIX, and Windows
ISBN: 0130463884
EAN: 2147483647
Year: 2003
Pages: 121

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net