OXIESEC PANEL
- Current Dir:
/
/
home
/
cubot
/
bin
/
etl_odbc
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📄
-d
10 bytes
02/03/2023 07:34:13 AM
rw-r--r--
📁
..
-
02/03/2023 08:06:37 AM
rwxr-xr-x
📄
config.pl
7.61 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
cross2normal.pl
3.71 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
dataextract.sh
2.51 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
etl.pl
5.42 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
etlproc
9.99 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
func.pl
4.01 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
globvar.sh
127 bytes
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
initetl.pl
1.88 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
libawk.awk
3.07 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
makeXtab2NormalExcel.pl
5.73 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
process.pl
6.91 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
process_changed.pl
5.69 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
readwrite.pl
4.16 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
rxcsv.pl
7.94 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
rxdb.pl
11.06 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
rxfile.pl
4.68 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
rxsalesforce.pl
3.5 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
rxxml.pl
13.83 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
rxxml2.pl
4.18 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
sendmail.pl
1.06 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
sourcequery.pl
4.18 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
sql.pl
23.98 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
store.pl
7.97 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
tags
13.14 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
task.pl
33.48 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📁
test
-
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
userfunc.pl
5.05 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
valid.pl
3.64 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
workflow.pl
3.94 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
📄
xform.pl
2.62 KB
02/03/2023 07:34:13 AM
rwxr-xr-x
Editing: sourcequery.pl
Close
#!/usr/bin/perl ######################################################## # ALL QUERY & QUERY TASK RELATED THING IN THIS BLOCK # ######################################################## sub create_database_source_query{ my $dbtype = shift; my $srctabname = shift; my $srccols = shift; my $tabtype = shift; printlog($INFO ,"CREATING QUERY: $dbtype] .. $srctabname] .. $srccols] .. $tabtype ]"); my $qrysep = ''; my $colstr = ''; if($dbtype =~ m/racle/si){#Looking Oracle $qrysep = "||'$G_DBOutDelim'||SLASH_N_CHAR"; } else{ $qrysep = ","; } foreach $srccolname(@$srccols){ printlog($INFO ,"CREATING QUERY: [$srccolname]\n"); if($srccolname =~ m/No_Source/){ $srccolname = '\'\''; } else{ $colstr = $colstr."$srccolname$qrysep"; } } if($dbtype =~ m/alesforce/si){ $colstr=$colstr.$qrysep; } else{ $colstr=$colstr."\'endl\'$qrysep"; } for($i=0; $i<length($qrysep); $i++){ chop($colstr); } $colstr =~ s/\s//g; if($dbtype =~ m/alesforce/si){ chop($colstr); } if($tabtype eq 'Q'){ return $colstr; } else{ #$source_query = "select $colstr from $srctabname"; $source_query = "SELECT $colstr FROM $srctabname"; return $source_query; } } sub getqcols{ my $sqry = shift; my @a = split /\s+/, $sqry; my $sc = 0; my $fc = 0; my $cols = ''; my $rest = ''; foreach my $v(@a){ next if(($fc==0) && ($v =~ /\bselect\b/gi)); if(($fc==0) && ($v =~ /\bfrom\b/gi)){ $fc = 1; next; } if($fc == 0){ $cols = $cols." ".$v; }else{ $rest = $rest." ".$v; } } return ($cols, $rest); } sub makeOraPipedQuery{ my $query = shift; my $qstr = shift; my $sepch = shift; my $sqry = ''; my $i = 0; if($query =~ /{/){# Added for complex queries } return make_curlybrace_oraquery($query, $sepch); } if ($query =~ /\bunion\b/gsi){ my @selqlist = (); @selqlist = split /\bunion\b/i, $query; foreach my $q(@selqlist){ my ($collist, $aftr_from) = &getqcols($q); $collist=$collist.","."\'endl\'"; my $collist = &makeOraPipedQueryBlock($collist, $sepch); if($i eq 0){ } else{ $sqry = $sqry . ' union '; } $sqry = $sqry . 'select ' . $collist. ' from' . $aftr_from; $i++; $collist = ''; $aftr_from = ''; $q = ''; } } else{ my ($collist, $aftr_from) = &getqcols($query); my $collist = &makeOraPipedQueryBlock($qstr, $sepch); $sqry = 'select ' . $collist. ' from' . $aftr_from; } printlog($QUERY, "ORA Query:$sqry"); return $sqry; } sub make_curlybrace_oraquery{ my $inquery = shift; my $sepch = shift; my $brace = 0; my $ix = 0; my $nthcollist = -1; my @collist = (); my @splitqlist = (); if($inquery =~ /{/)#for indent putting } { @splitqlist = split /\s/, $inquery; foreach my $curword(@splitqlist){ if($curword =~ /{/){ $nthcollist++; $brace++; } if($curword =~ /}/){ $collist[$nthcollist] = $collist[$nthcollist].$curword; $splitqlist[$ix] = "{$nthcollist"; $brace--; } if($brace > 0){ $collist[$nthcollist] = $collist[$nthcollist].$curword; $splitqlist[$ix] = "{$nthcollist"; } $ix++; } } my $outquery = join(' ', @splitqlist); $nthcollist = -1; my $length= scalar @collist; foreach $cols(@collist){ $nthcollist++; $cols =~ s/[\{\}]//g; if(($length-1) == $nthcollist){ printlog($MAX, "MY LIST IS $length"); $cols=$cols.","."\'endl\'"; } $cols = makeOraPipedQueryBlock($cols, $sepch); $outquery =~ s/(\{$nthcollist )+/$cols /g; printlog($MAX, "[$nthcollist][$cols]"); } printlog($MAX, "$outquery"); return $outquery; } sub makeOraPipedQueryBlock{ my $qstr = shift; my $sepch = shift; my @qchr = split //, $qstr; my @collist = (); my $curcol = ''; my $brc = 0; foreach my $ch(@qchr){ if($ch eq '('){ $brc++; } elsif($ch eq ')'){ $brc--; } if(($brc eq 0) && ($ch eq ",")){ push(@collist, $curcol); $curcol = ''; } else{ $curcol = $curcol.$ch; } } push(@collist, $curcol); #Now making piped query from collist my $pipedqry = ''; my $i = 0; foreach $cv(@collist){ $cv =~ s/ as .*//g; if($i eq 0){ $pipedqry = $cv; } else{ $pipedqry = $pipedqry.$sepch.$cv; } $i++; } printlog($MAX, "[RETURNING ORACLE COLS $sepch => $pipedqry]"); return $pipedqry; } 1;