Generation of additional DB2 commands

 < Day Day Up > 



In Example 9-42 is a sample script to generate DB2 UDB UPDATE commands from Oracle control files.

Example 9-42: Generation of additional DB2 update commands

start example
 #!/usr/bin/perl # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #  Script:      gen_load_update.pl #  Author:      Stefan Hummel #  Date:        07/31/2003 # #  Syntax:      perl gen_load_update.pl -c <controlfile> # #  Description: Generation of additional UPDATE commands for DB2 UDB #               regarding to an Oracle control file # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # use Text::ParseWords; # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # initialization # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $tablename   = '<missing>'; # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # functions # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # sub usage {   printf("USAGE: perl gen_load_update.pl -c controlfile\n\n");   exit; }; sub read_controlfile {   $delim = '\s+';   $i     = 1;   open(CTLFILE, $_[0]);   @ctl_lines = <CTLFILE>;   foreach (@ctl_lines) {      @words = &parse_line($delim, 1, $_);      foreach (@words) {         @parts = split (/([,])/, $_);         $n = 0;         foreach (@parts) {            $array[$i++] = $parts[$n++]         }      }   }   $max_line = $i-1;   close(CTLFILE); }; sub current_columnname {    $x = $_[0] - 1;    while (('(' ne $array[$x]) && (',' ne $array[$x]) && ($x > 0)) {       $x--;    }    return $array[$x + 1]; }; sub parse_nullif {    $i++;    $condition[$c][0] = $tablename;               # tablename    $condition[$c][1] = &current_columnname($i);  # tablename    $condition[$c][2] = 'NULL';                   # set condition    $condition[$c][3] = $array[$i];               # where clause    $c++; }; sub parse_defaultif {    $i++;    $condition[$c][0] = $tablename;               # tablename    $condition[$c][1] = &current_columnname($i);  # tablename    $condition[$c][2] = 'DEFAULT';                # set condition    $condition[$c][3] = $array[$i];               # where clause    $c++; }; sub parse_into {    $i++;    $i++;    $tablename = $array[$i]; }; # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # main # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # read the parameters while ($parameter=shift(@ARGV)) {    if ("-c" eq $parameter) {       $filename = shift @ARGV;    }; }; if ('' eq $filename) {    &usage; } # read the control file, save each word in array &read_controlfile($filename); # read array and parse commands $i = 1; $c = 1; while ($i <= $max_line) {    if ("NULLIF" eq uc($array[$i])) {       # print "NULLIF !!!"       &parse_nullif;    }    elsif ("DEFAULTIF" eq uc($array[$i])) {       # print "NULLIF !!!"       &parse_defaultif;    }    elsif ("INTO" eq uc($array[$i])) {       &parse_into;    };    $i++; }; $max_condition = $c; # generate DB2 update commend for ($n=1;$n<$max_condition;$n++) {    printf("UPDATE %s\n"     ,$condition[$n][0]);    printf("SET %s=%s\n"     ,$condition[$n][1]                             ,$condition[$n][2]);    printf("WHERE %s\);\n\n" ,$condition[$n][3]); }; 
end example



 < Day Day Up > 



Oracle to DB2 UDB Conversion Guide2003
Oracle to DB2 UDB Conversion Guide2003
ISBN: N/A
EAN: N/A
Year: 2004
Pages: 132

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