Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: Extracting only required length in a column in perl DBI

by Tux (Monsignor)
on Jan 15, 2013 at 13:37 UTC ( #1013398=note: print w/ replies, xml ) Need Help??


in reply to Extracting only required length in a column in perl DBI

I'm not sure you pasted actual code, as that would warn a lot. Why did you comment 'use strict;'? And why is 'use warnings;' missing? I am absolutely sure it will give you all the hints you need

my $dbh = DBI->connect($server,$user,$passwd,$dbd, {RaiseError => 1,Au +toCommit => 1 }); ^? read the docs again # Prepare the SQL query for execution my $sql = "SELECT $ans_rid, $ans_qcn, $ans_loc FROM ft_int_tbl WHERE $ +ans_rid is not null"; ^? ^? ^? ^ +? my $sth = $dbh->prepare($sql) or die "Couldn't prepare statement:$DBI: +:errstr; stopped"; ^? you set RaiseError, so you'll never g +et that # Execute the query $sth->execute() or die "Couldn't execute statement: $DBI::errstr; stop +ped"; ^? same here #open JKLL, ">$an_dt_file" or die "can't open file $ansb_detail_file f +or write,\n"; # Fetch each row and print it while ( my ($ans_rid, $ans_qcn, $ans_loc) = $sth->fetchrow_array() ) { my ($ansb_cktid, $ansb_mcn, $ansb_soc) = unpack("A3 A3 A3", $_); ^? what do + you expect to be in $_ #print JKLL"Field 1: $ansb_cktid Field 2:$ansb_mcn Field 3: $ansb_soc +\n"; print "Field 1: $ansb_cktid Field 2:$ansb_mcn Field 3: $ansb_soc \n"; } ==> corrected based on guesses, as I have no idea my $dbh = DBI->connect ($server, $user, $passwd, { RaiseError => 1, PrintError => 1, # Comes in very handy when you are runni +ng into trouble ShowErrorStatement => 1, # this too AutoCommit => 1, }); # Prepare the SQL query for execution my $sql = "SELECT ans_rid, ans_qcn, ans_loc FROM ft_int_tbl WHERE ans_ +rid is not null"; my $sth = $dbh->prepare ($sql); # Execute the query $sth->execute (); #open JKLL, ">$an_dt_file" or die "can't open file $ansb_detail_file f +or write,\n"; # Fetch each row and print it while (my ($ans_rid, $ans_qcn, $ans_loc) = $sth->fetchrow_array ()) { my ($ansb_cktid, $ansb_mcn, $ansb_soc) = unpack "A3 A3 A3", $ans_l +oc; print "Field 1: $ansb_cktid Field 2:$ansb_mcn Field 3: $ansb_soc \ +n"; }

Enjoy, Have FUN! H.Merijn


Comment on Re: Extracting only required length in a column in perl DBI
Download Code
Re^2: Extracting only required length in a column in perl DBI
by Thomas Kennll (Acolyte) on Jan 15, 2013 at 14:00 UTC
    Tux,
    while (my ($ans_rid, $ans_qcn, $ans_loc) = $sth->fetchrow_array ()) { my ($ansb_cktid, $ansb_mcn, $ansb_soc) = unpack "A3 A3 A3", $ans_l +oc;
    This unpacks only the 3rd column ie, $ans_loc... I wanted to unpack all the 3 columns..ie, $ans_rid, $ans_qcn, $ans_loc and have the values stored in $ansb_cktid, $ansb_mcn, $ansb_soc..
      Then you need to unpack all 3, you can't unpack three variables at once AFAIK. The "A3 A3 A6" is a format for unpacking one variable, as Tux showed in the example. You could just used substrings,
      $ans_rid = substr($ans_rid, 0, 3); $ans_qcn = substr($ans_qcn, 0, 3); $ans_loc = substr($ans_loc, 0, 6);
      ..or make new variables for each substr() leaving the original variable intact.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1013398]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (4)
As of 2015-07-06 03:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (70 votes), past polls