http://www.perlmonks.org?node_id=390963


in reply to Re^5: DBD::Pg copy issues
in thread DBD::Pg copy issues

Alright this is killling me now. Here is my new code and thank you so much for your help. This thing can't even get passed the first COPY statement without dying, and I can't get any type of error message back other then it failed!
$dbh->func("COPY snapshot_$formName (name, value, collect_date, omp_id +) from STDIN", "putline" or die "Couldn't write COPY STATEMENT to snapshot_$formName: $ +@, " . $dbh->errstr; print "Started a line\n"; foreach my $values (@form_out){ #my $cmd = `rm -f $form_out`; my @values = split(/;/, $values); my @names = split(/ /, $ga->{'outputString'}{$formName}); my $count = 0; foreach my $ix (0 .. $#names ){ my $value = $values[$ix]; if (!$names[$count]){ print "$value element # $count does not exist in array\n"; } my $name = $names[$count]; $value = 'NULL' if not defined $value; $value =~ s/^\s+//; $value =~ s/\s+$//; # The following line will remove any internal tabs which would + mess with # the column count. $value =~ s/\s+/ /g; $value = 'Null' if not length $value; my $row = join("\t", $name, $value, $date, $ompId); $dbh->func($row , 'putline' ) or die "Couldn't write `$row' to snapshot_$formName: $@, " . $ +dbh->errstr; $count++; } } $dbh->func( "\\.\n", 'putline' ); print "ended that line\n"; }


Tradez
"Never underestimate the predictability of stupidity"
- Bullet Tooth Tony, Snatch (2001)

Replies are listed 'Best First'.
Re^7: DBD::Pg copy issues
by diotalevi (Canon) on Sep 14, 2004 at 22:38 UTC
    Oh that's too bad! I would have just been using the psql binary directly by now. If you really want to do this without the external process you should probabyl raise this problem on one of the PostgreSQL mailing lists.
      oh my god!!!! arghh, well I would have given up and tried this before but I am just too competitive. But now, arghh, i get this!
      DBD::Pg::db do failed: ERROR: missing data for column "collect_date" +at ./getSnapshot.pl line 175, <FORM_OUT> line 102. Couldn't write COPY STATEMENT to snapshot_btseqp: , ERROR: missing da +ta for column "collect_date" at ./getSnapshot.pl line 175, <FORM_OUT> + line 102.
      when i do this:
      my $row = join("\t", $name, $value, $date, $ompId); print INPUTFILE "$row\n"; } } print INPUTFILE "\\.\n"; $dbh->do("COPY snapshot_$formName (name, value, collect_date, omp_ +id) from '$db_input'") or die "Couldn't write COPY STATEMENT to snapshot_$formName: $ +@, " . $dbh->errstr;
      Seriously, what the hell. Also, when I do the same copy statement from the cmd line, it works. I hate this. I even catch to make sure that $date, which is always there is there and it is.


      Tradez
      "Never underestimate the predictability of stupidity"
      - Bullet Tooth Tony, Snatch (2001)