Re: COPY with default values?

Per-Olof Pettersson <pgsql@peope.net>

From: Per-Olof Pettersson <pgsql@peope.net>
To: Jeff Boes <jboes@nexcerpt.com>
Date: 2001-05-28T06:32:06Z
Lists: pgsql-bugs, pgsql-general
Jeff Boes wrote:

> Let's say I have a table of keywords, with a SERIAL primary key.
> 
> CREATE TABLE keywords (
>   key_id  SERIAL PRIMARY KEY,
>   key_text TEXT
> );
> 
> Now I would like to initialize this table with a COPY statement, but
> without supplying values for the primary key. In other words, how can I
> use COPY to perform the same function as
> 
> INSERT INTO keywords (keyword_text) VALUES ('foo');
> INSERT INTO keywords (keyword_text) VALUES ('bar');
> ...
> 
> I have tried
> 
> COPY keywords FROM stdin USING DELIMITERS '|';
> |foo
> |bar
> ...
> 
> and also 
> 
> 0|foo
> 0|bar
> 
> and even
> 
> \N|foo
> \N|bar
> 
> I even tried creating a view on keywords that has only keyword_text, and 
> copying into THAT--no luck. Then I wrote a rule to replace inserts on the
> view with inserts on the table, but apparently COPY doesn't trigger INSERT
> rules. Grumble...
> 
> 
> 

If you just want a line-number for the records you could always on UN*X 
do "nl file > newfile".

Best regards
Per-Olof Pettersson