I am reading the flat file with the following Perl program. If the flat file only has one component in it the program works fine. If the there is greater than one component it does not work for the 2nd, 3rd, etc components.>(Request_id - unique for component number) SPROC Name: make_geo_mortality_count_C_test *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;1;Standardisation;'EuropeanSta +ndard' *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;2;Disease_cat;COPD *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;3;Sex;2 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;4;Sex_code;MF *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;5;Constraint_ref;1 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;6;ICD_start_9;A490 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;7;ICD_end_9;A492 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;8;ICD_start_10;J400 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;9;ICD_end_10;J449 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;10;ICD_start_9_B;A496 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;11;ICD_end_9_B;A496 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;12;ICD_start_10_B;J400 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;13;ICD_end_10_B;J449 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;14;ICD_start_9_C;A496 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;15;ICD_end_9_C;A496 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;16;ICD_start_10_C;J400 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;17;ICD_end_10_C;J449 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;18;Yearfrom;1998 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;19;Yearto;2002 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;20;Min_age;0 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;21;Max_age;74 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;22;Region;Community *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;23;Instance_name;Place_A *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;24;Geo_scope;Town *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;25;Number_of_years;5 *gzQkDyUoIKtQXPbXQgRRlgjopGabmhHaxoDO;1;26;Unique_identifier;'gzQkDyUo +IKtQXPbXQgRRlgjopGabmhHaxoDO' *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;1;Standardisation;'EuropeanSta +ndard' *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;2;Disease_cat;COPD *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;3;Sex;2 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;4;Sex_code;MF *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;5;Constraint_ref;1 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;6;ICD_start_9;A490 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;7;ICD_end_9;A492 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;8;ICD_start_10;J400 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;9;ICD_end_10;J449 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;10;ICD_start_9_B;A496 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;11;ICD_end_9_B;A496 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;12;ICD_start_10_B;J400 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;13;ICD_end_10_B;J449 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;14;ICD_start_9_C;A496 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;15;ICD_end_9_C;A496 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;16;ICD_start_10_C;J400 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;17;ICD_end_10_C;J449 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;18;Yearfrom;1998 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;19;Yearto;2002 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;20;Min_age;0 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;21;Max_age;74 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;22;Region;Community *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;23;Instance_name;Place_B *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;24;Geo_scope;Town *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;25;Number_of_years;5 *JdwTXlGGdgGHsdABgvFqXuwSnZEchiybqBqC;2;26;Unique_identifier;'JdwTXlGG +dgGHsdABgvFqXuwSnZEchiybqBqC' *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;1;Standardisation;'EuropeanSta +ndard' *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;2;Disease_cat;COPD *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;3;Sex;2 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;4;Sex_code;MF *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;5;Constraint_ref;1 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;6;ICD_start_9;A490 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;7;ICD_end_9;A492 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;8;ICD_start_10;J400 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;9;ICD_end_10;J449 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;10;ICD_start_9_B;A496 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;11;ICD_end_9_B;A496 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;12;ICD_start_10_B;J400 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;13;ICD_end_10_B;J449 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;14;ICD_start_9_C;A496 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;15;ICD_end_9_C;A496 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;16;ICD_start_10_C;J400 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;17;ICD_end_10_C;J449 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;18;Yearfrom;1998 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;19;Yearto;2002 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;20;Min_age;0 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;21;Max_age;74 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;22;Region;Community *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;23;Instance_name;Place_C *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;24;Geo_scope;Town *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;25;Number_of_years;5 *tYeTCkrrkDGrudrBcYFHWZisnqvvGiTCgAQs;3;26;Unique_identifier;'tYeTCkrr +kDGrudrBcYFHWZisnqvvGiTCgAQs' END
Any suggestions as to the best way to handle this flat file?#! perl -w scipt use strict; use warnings; use DBI; use DBD::ODBC; use File::Copy; my ($data_source, $database, $user_id, $password) = qw( *********** ** +****** ******** ********); my $conn_string = "driver={SQL Server}; Server=$data_source; Database= +$database; Trusted_Connection=yes"; my $dbh = DBI->connect( "DBI:ODBC:$conn_string" ) or die $DBI::errstr; my $Request_id; my $Variable_number; my $Variable; my $Choice; my @VARIABLE; my @CHOICE; my $Command; my $Return_results; my $Component_number_old = 1; my $Component_number = 1; my $SPROC; my $unique; my $flat_file = "Flat_file.txt"; open (FLAT_FILE, "<$flat_file"); while (<FLAT_FILE>){ chomp; print "look at me\n"; $Component_number_old = $Component_number; # undef $Component_number; if ($_ =~ /SPROC\sName\:\s([a-z|A-Z|0-9|_]{1,100})/){ print "Hi_A\n"; $SPROC = $1; } elsif ($_ =~ /^\*(.{36})\;(\d{1,5})\;(\d{1,5})\;([a-z|A-Z|0-9|_]{1,5 +0})\;(.{1,100})/){ print "$_\n"; push (@VARIABLE, $Variable); push (@CHOICE, $Choice); print "Hi_B\n"; $unique = $1; $Component_number = $2; $Variable = $4; $Choice = $5; } if ($_ =~ /^\sEND/){ print "Hi_E\n"; push (@VARIABLE, $Variable); push (@CHOICE, $Choice); # $Command = join(' ', # 'EXEC', # $SPROC, # join(', ', # @CHOICE[1 .. $Component_number_old])) . ';'; $Command = "EXEC ".$SPROC." ".$CHOICE[1].", ".$CHOICE[2].", ".$C +HOICE[3].", ".$CHOICE[4].", ".$CHOICE[5].", ".$CHOICE[6].", ".$CHOICE +[7].", ".$CHOICE[8].", ".$CHOICE[9].", ".$CHOICE[10].", ".$CHOICE[11] +.", ".$CHOICE[12].", ".$CHOICE[13].", ".$CHOICE[14].", ".$CHOICE[15]. +", ".$CHOICE[16].", ".$CHOICE[17].", ".$CHOICE[18].", ".$CHOICE[19]." +, ".$CHOICE[20].", ".$CHOICE[21].", ".$CHOICE[22].", ".$CHOICE[23].", + ".$CHOICE[24].", ".$CHOICE[25].", ".$CHOICE[26].";"; my $Request_id = $CHOICE[26]; print "$Command\n"; Got_Command($Command, $Request_id); # exit; undef @CHOICE; my @CHOICE; } if ($Component_number_old != $Component_number){ print "Hi_D\n"; push (@VARIABLE, $Variable); push (@CHOICE, $Choice); # $Command = join(' ', # 'EXEC', # $SPROC, # join(', ', # @CHOICE[1 .. $Component_number_old])) . ';'; if ($Component_number > 1){ my $a = 1+($Component_number*26); my $b = 2+($Component_number*26); my $c = 3+($Component_number*26); my $d = 4+($Component_number*26); my $e = 5+($Component_number*26); my $f = 6+($Component_number*26); my $g = 7+($Component_number*26); my $h = 8+($Component_number*26); my $i = 9+($Component_number*26); my $j = 10+($Component_number*26); my $k = 11+($Component_number*26); my $l = 12+($Component_number*26); my $m = 13+($Component_number*26); my $n = 14+($Component_number*26); my $o = 15+($Component_number*26); my $p = 16+($Component_number*26); my $q = 17+($Component_number*26); my $r = 18+($Component_number*26); my $s = 19+($Component_number*26); my $t = 20+($Component_number*26); my $u = 21+($Component_number*26); my $v = 22+($Component_number*26); my $w = 23+($Component_number*26); my $x = 24+($Component_number*26); my $y = 25+($Component_number*26); my $z = 26+($Component_number*26); $Command = "EXEC ".$SPROC." ".$CHOICE[1].", ".$CHOICE[2].", ".$CHO +ICE[3].", ".$CHOICE[4].", ".$CHOICE[5].", ".$CHOICE[6].", ".$CHOICE[7 +].", ".$CHOICE[8].", ".$CHOICE[9].", ".$CHOICE[10].", ".$CHOICE[11]." +, ".$CHOICE[12].", ".$CHOICE[13].", ".$CHOICE[14].", ".$CHOICE[15].", + ".$CHOICE[16].", ".$CHOICE[17].", ".$CHOICE[18].", ".$CHOICE[19].", +".$CHOICE[20].", ".$CHOICE[21].", ".$CHOICE[22].", ".$CHOICE[23].", " +.$CHOICE[24].", ".$CHOICE[25].", ".$CHOICE[26].";"; # $Command = "EXEC ".$SPROC." ".$CHOICE[$a].", ".$CHOICE[$b].", ".$ +CHOICE[$c].", ".$CHOICE[$d].", ".$CHOICE[$e].", ".$CHOICE[$f].", ".$C +HOICE[$g].", ".$CHOICE[$h].", ".$CHOICE[$i].", ".$CHOICE[$j].", ".$CH +OICE[$k].", ".$CHOICE[$l].", ".$CHOICE[$m].", ".$CHOICE[$n].", ".$CHO +ICE[$o].", ".$CHOICE[$p].", ".$CHOICE[$q].", ".$CHOICE[$r]." , ".$CHO +ICE[$s].", ".$CHOICE[$t].", ".$CHOICE[$u].", ".$CHOICE[$v].", ".$CHOI +CE[$w].", ".$CHOICE[$x].", ".$CHOICE[$y].", ".$CHOICE[$z].";"; } else{ $Command = "EXEC ".$SPROC." ".$CHOICE[1].", ".$CHOICE[2].", ".$CHO +ICE[3].", ".$CHOICE[4].", ".$CHOICE[5].", ".$CHOICE[6].", ".$CHOICE[7 +].", ".$CHOICE[8].", ".$CHOICE[9].", ".$CHOICE[10].", ".$CHOICE[11]." +, ".$CHOICE[12].", ".$CHOICE[13].", ".$CHOICE[14].", ".$CHOICE[15].", + ".$CHOICE[16].", ".$CHOICE[17].", ".$CHOICE[18].", ".$CHOICE[19].", +".$CHOICE[20].", ".$CHOICE[21].", ".$CHOICE[22].", ".$CHOICE[23].", " +.$CHOICE[24].", ".$CHOICE[25].", ".$CHOICE[26].";"; } my $Request_id = $CHOICE[26]; print "$Command\n"; Got_Command($Command, $Request_id); # undef @CHOICE; # my @CHOICE; print "@CHOICE"; # exit; push (@VARIABLE, $Variable); push (@CHOICE, $Choice); # $VARIABLE[0] = $Variable; # $CHOICE[0] = $Choice; } } close FLAT_FILE; my $source = $flat_file; my $dest = 'Bin'; move($source, $dest) or die "Error moving file: $!\n"; sub Got_Command { my($Command,$Request_id) = @_; print "Hi_F\n"; print "here\n"; my $output_file = "Output/Output_file_".$Request_id.".txt"; open (OUTPUT_FILE, "+>>$output_file"); # Pass parameters to a stored procedure stored procedure print "$Command\n"; my $sthB_A = $dbh->prepare($Command) or die "Couldn't prepare query +: ".$dbh->errstr; $sthB_A->execute() or die "Couldn't execute query: ".$sthB_A->errstr +; my $Return_results = "Select * from Result_storage_keep where Unique +_identifier = ".$Request_id."\;"; print "$Return_results\n"; my $sth = $dbh->prepare($Return_results) or die "Couldn't prepare qu +ery: ".$dbh->errstr; $sth->execute() or die "Couldn't execute query: ".$sth->errstr; # my @row; while (my @row = $sth->fetchrow_array ) { print OUTPUT_FILE join("\t", @row); print OUTPUT_FILE "\n"; } }
In reply to Flat file handling by Win
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |