Обсуждение: copy from with trigger
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;
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
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
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
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
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.