Re: numbering rows on import from file
От | Scott Marlowe |
---|---|
Тема | Re: numbering rows on import from file |
Дата | |
Msg-id | dcc563d10805021600y503d7f1ap5258d22e28c4dcc9@mail.gmail.com обсуждение исходный текст |
Ответ на | numbering rows on import from file (Alexy Khrabrov <deliverable@gmail.com>) |
Список | pgsql-sql |
On Fri, May 2, 2008 at 3:26 PM, Alexy Khrabrov <deliverable@gmail.com> wrote: > Greetings -- I have a huge table of the form > (integer,integer,smallint,date). Its origin is an ASCII file which I load > with \copy. Now I want to number the rows, adding an id column as an > autoincrement from a sequence. How should I do the import now for the > sequence to work -- should I add the id column last, so it will not be > filled by copy and presumably autoincrement? Add the sequence to the column. something like this: create table mytable (id serial primary key, int1 integer, int2 integer, smallint1 smallint, date1 date); copy mytable (int1,int2, smallint1, date1) from STDIN; 120,2304,4,'2007-01-01' 204,3204,2,'2007-01-02' (and so on) \. with a lot of other dbs, and a lot of languages, you're taught to perform discrete steps when operating on your data. Generally speaking, PostgreSQL is much better at doing the most NOW, not later. If you've got derived data you want to put into the table, put all the data into a loading table, and transfer it to the real table with ONE insert into select from query. > Or, once the table is already in, can I add a column and force it to be > filled with consecutive numbers, effectively numbering the rows? Bad idea. As mentioned before, every update or insert, whether it succeeds or not will create a dead row in the table. If you update (or attempt to update) all rows in a 10,000,000 row table three times, you now have 30,000,000 dead rows in your table.
В списке pgsql-sql по дате отправления: