Re: [SQL] Newbie dbadmin out of his league - Mailing list pgsql-sql

From Tom Lane
Subject Re: [SQL] Newbie dbadmin out of his league
Date
Msg-id 7648.935788758@sss.pgh.pa.us
Whole thread Raw
In response to Newbie dbadmin out of his league  (Tim Pizey <tim@paneris.co.uk>)
Responses Re: [SQL] Newbie dbadmin out of his league  ("Ross J. Reedstrom" <reedstrm@wallace.ece.rice.edu>)
Re: [SQL] Newbie dbadmin out of his league  (Herouth Maoz <herouth@oumail.openu.ac.il>)
List pgsql-sql
Tim Pizey <tim@paneris.co.uk> writes:
> 2. How do I use COPY?

>    Presumably I again have to take control of the key values,
>    drop the index
>    copy from tab delimited file containing hard ids
>    create id sequence
>    create index
>    modify id definition

Yup, that's about what you need to do.  You can leave the "DEFAULT"
clause where it is, since it won't be invoked during a COPY that's
supplying non-default values for the ID column.  (A good thing too,
since I don't think we support ALTER TABLE ADD DEFAULT...)

Just create the sequence with the right starting value (one past last
ID being loaded).  You can do that before or after the COPY, doesn't
matter.

A COPY will be way faster than a series of INSERT commands, especially
if each INSERT is invoking a nextval().  nextval() is great for
serializing live updates but it's pretty inefficient for a bulk-loading
situation.  Creating the index after the load is reputed to be faster
than building it incrementally, as well.

BTW, I believe pg_dump gets this right, so you could look at the script
generated by pg_dump of a small sample table for details.
        regards, tom lane


pgsql-sql by date:

Previous
From: Tim Pizey
Date:
Subject: Newbie dbadmin out of his league
Next
From: Michael Richards
Date:
Subject: RE: [SQL] 2 million+ entries