null dates and '?' under pgdbi. - Mailing list pgsql-interfaces

From Tom Link
Subject null dates and '?' under pgdbi.
Date
Msg-id Pine.GSO.3.96L.981106160841.29560C-100000@unixs-eval.cis.pitt.edu
Whole thread Raw
List pgsql-interfaces
Postgresql 6.3.8-2 (from Debian 2.0 distribution)
Perl       5.004_04
Pg.pm      1.6
DBI.pm     1.85

I'm having trouble loading empty dates using perl's dbi::pg and the
method where you prepare an insert/update with '?'s which get loaded
via executes.  I tried "\N" like I saw in the archives and null which
works in psql.

The following sample code only load the first and last case:

<---------------------------------------------------------------->
#! /usr/bin/perl

use DBI;

$dbh = DBI->connect("dbi:Pg:dbname='test'")
  || die "Error connecting to datbase $dbase: $DBI::errstr\n";

$sth = $dbh->do("DROP TABLE foo")|| warn "Error dropping table:
$DBI::errstr\n";
$sth = $dbh->do("

    CREATE TABLE foo (
        id     DECIMAL(5),
        birth  DATE,
        name   VARCHAR(15)
    )

") || die "Error creating new table: $DBI::errstr\n";

##############################################

($sth = $dbh->prepare("

    INSERT INTO foo
      (id, birth, name)
      VALUES(?,?,?)

")) || die "Error preparing insert: $DBI::errstr\n";

while (<DATA>) {
  chomp();
  @data = split (/\s*\|\s*/, $_);
  $sth->execute(@data) || warn "$_: $DBI::errstr\n";
}

##############################################

$sth = $dbh->prepare("select * from foo")
  || die "Error preparing select: $DBI::errstr\n";

$sth->execute() || die "Error preforming select: $DBI::errstr\n";

while (defined ($bar = $sth->fetchrow_hashref)) {
  printf ("%5d | %-15s | %15s | %s\n", $$bar{id}, $$bar{name}, $$bar{birth});
}

__DATA__
201 | 1910-01-21 | Tom
202 |            | Dick
203 | \N         | Harry
204 | null       | John
205 | NULL       | Mary
206 | "\N"       | Chris
207 | '\N'       | Joan
208 | \\N        | Ralph
209 | \\\N       | Bjork
210 | 1929-01-26 | Nancy
<------------------------------------------------------------------>

The output:

<------------------------------------------------------------------>
ERROR:  Bad date external representation
202 |            | Dick: ERROR:  Bad date external representation

ERROR:  Bad date external representation N
203 | \N         | Harry: ERROR:  Bad date external representation N

ERROR:  Bad date external representation null
204 | null       | John: ERROR:  Bad date external representation null

ERROR:  Bad date external representation NULL
205 | NULL       | Mary: ERROR:  Bad date external representation NULL

ERROR:  Bad date external representation "N"
206 | "\N"       | Chris: ERROR:  Bad date external representation "N"

ERROR:  parser: parse error at or near "\"
207 | '\N'       | Joan: ERROR:  parser: parse error at or near "\"

ERROR:  Bad date external representation \N
208 | \\N        | Ralph: ERROR:  Bad date external representation \N

ERROR:  Bad date external representation \N
209 | \\\N       | Bjork: ERROR:  Bad date external representation \N

  201 | Tom             |      01-21-1910 |
  210 | Nancy           |      01-26-1929 |
<------------------------------------------------------------------>

Thanks,
Tom

Tom Link -- N3JNN                          Email: tml+@pitt.edu
University of Pittsburgh Medical Center    Phone: +1 412 681-3482
Western Psychiatric Institute and Clinic
Program in Epidemiology


pgsql-interfaces by date:

Previous
From: Olivier TURPIN
Date:
Subject: Re: [INTERFACES] Access frontend
Next
From: "Oliver Elphick"
Date:
Subject: Re: [INTERFACES] crypt not included when compiling libpgtcl !!!!!!!