Обсуждение: copy from with trigger

Поиск
Список
Период
Сортировка

copy from with trigger

От
Chris spotts
Дата:
I'm trying to copy from a tab delimited file.  The dates inside the file
are Unix timestamp style dates.
I thought the following script would do the trick, but it just gives me
an error saying
ERROR:  invalid input syntax for type timestamp: "1238736600"
CONTEXT:  COPY testtable line 1, column acquire_time: "1238736600"

Its mapping the right value to the write column, but it doesn't appear
to be going through the trigger.
Here's the relevant setup info.  Just assume the upload file is one unix
style date.

Thanks for any help, I'm rather confused.

CREATE TABLE testtable
(
  acquire_time timestamp without time zone NOT NULL
);
CREATE FUNCTION importData() RETURNS trigger AS $$
    BEGIN
    NEW.acquire_time := TIMESTAMP 'epoch' + int4(NEW.acquire_time) *
INTERVAL '1 SECOND';
        RETURN NEW;
    END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER btestinsert
  BEFORE INSERT
  ON testtable
  FOR EACH ROW
  EXECUTE PROCEDURE importdata();


COPY testtable
(
  acquire_time
)
FROM '/home/testy/test.tab' WITH DELIMITER E'\t' CSV;



Re: copy from with trigger

От
Tom Lane
Дата:
Chris spotts <rfusca@gmail.com> writes:
> I'm trying to copy from a tab delimited file.  The dates inside the file
> are Unix timestamp style dates.
> I thought the following script would do the trick, but it just gives me
> an error saying
> ERROR:  invalid input syntax for type timestamp: "1238736600"
> CONTEXT:  COPY testtable line 1, column acquire_time: "1238736600"

A trigger isn't going to help in the least for that; the data has to be
a valid timestamp before the trigger will ever see it.

The usual trick for this type of conversion is to load the data into a
temporary table that has simple column types (eg integer or text) and
then do your transformations during an INSERT/SELECT into the real
target table.

            regards, tom lane

Re: copy from with trigger

От
"Chris Spotts"
Дата:
Well that's a bummer, ok.  Thanks.

-----Original Message-----
From: Tom Lane [mailto:tgl@sss.pgh.pa.us]
Sent: Sunday, April 05, 2009 10:27 PM
To: Chris spotts
Cc: pgsql-general@postgresql.org
Subject: Re: [GENERAL] copy from with trigger

Chris spotts <rfusca@gmail.com> writes:
> I'm trying to copy from a tab delimited file.  The dates inside the file
> are Unix timestamp style dates.
> I thought the following script would do the trick, but it just gives me
> an error saying
> ERROR:  invalid input syntax for type timestamp: "1238736600"
> CONTEXT:  COPY testtable line 1, column acquire_time: "1238736600"

A trigger isn't going to help in the least for that; the data has to be
a valid timestamp before the trigger will ever see it.

The usual trick for this type of conversion is to load the data into a
temporary table that has simple column types (eg integer or text) and
then do your transformations during an INSERT/SELECT into the real
target table.

            regards, tom lane


Re: copy from with trigger

От
Alvaro Herrera
Дата:
Chris Spotts escribió:
> Well that's a bummer, ok.  Thanks.

See also

http://archives.postgresql.org/message-id/20090406173912.GB4525%40alvh.no-ip.org

--
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

Re: copy from with trigger

От
"Chris Spotts"
Дата:
That's a dead link for me.

-----Original Message-----
From: Alvaro Herrera [mailto:alvherre@commandprompt.com]
Sent: Monday, April 06, 2009 12:42 PM
To: Chris Spotts
Cc: 'Tom Lane'; pgsql-general@postgresql.org
Subject: Re: [GENERAL] copy from with trigger

Chris Spotts escribió:
> Well that's a bummer, ok.  Thanks.

See also

http://archives.postgresql.org/message-id/20090406173912.GB4525%40alvh.no-ip
.org

--
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support


Re: copy from with trigger

От
Alvaro Herrera
Дата:
Chris Spotts escribió:
> That's a dead link for me.

Yes, because the message was very new and the archive indexer hadn't
picked it up yet  :-)  Try again now.

> -----Original Message-----
> From: Alvaro Herrera [mailto:alvherre@commandprompt.com]
> Sent: Monday, April 06, 2009 12:42 PM
> To: Chris Spotts
> Cc: 'Tom Lane'; pgsql-general@postgresql.org
> Subject: Re: [GENERAL] copy from with trigger
>
> Chris Spotts escribió:
> > Well that's a bummer, ok.  Thanks.
>
> See also
>
> http://archives.postgresql.org/message-id/20090406173912.GB4525%40alvh.no-ip
> .org


--
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.