Re: [NOVICE] COPY from temp table to main table insted of INSERT INTO - Mailing list pgsql-novice

From Stephen Froehlich
Subject Re: [NOVICE] COPY from temp table to main table insted of INSERT INTO
Date
Msg-id DM5PR06MB2891B4BF64C2B418AE6862F6E5AE0@DM5PR06MB2891.namprd06.prod.outlook.com
Whole thread Raw
In response to Re: [NOVICE] COPY from temp table to main table insted of INSERT INTO  ("David G. Johnston" <david.g.johnston@gmail.com>)
Responses Re: [NOVICE] COPY from temp table to main table insted of INSERT INTO  ("David G. Johnston" <david.g.johnston@gmail.com>)
Re: [NOVICE] COPY from temp table to main table insted of INSERT INTO  (Andreas Kretschmer <andreas@a-kretschmer.de>)
List pgsql-novice

I have already copied the source data over from R in an unnormalized form and then am normalizing it in SQL (via a series of queries).

 

Thanks,

Stephen

 

From: David G. Johnston [mailto:david.g.johnston@gmail.com]
Sent: Tuesday, July 11, 2017 11:00 AM
To: Stephen Froehlich <s.froehlich@cablelabs.com>
Cc: pgsql-novice@postgresql.org
Subject: Re: [NOVICE] COPY from temp table to main table insted of INSERT INTO

 

On Tue, Jul 11, 2017 at 9:45 AM, Stephen Froehlich <s.froehlich@cablelabs.com> wrote:

I tend to do mass inserts to my database, but INSERT INTO is taking quite a while for 100k values.

 

What is the syntax for using the COPY command to copy a well formatted temp table to the “end” of the primary table?  I am having trouble understanding https://www.postgresql.org/docs/9.5/static/sql-copy.html.

 

 

​Tables don't have beginnings or ends.

 

Are you intending to use client software to access the source data or are you planning on putting the source data in a location where the server o/s user can see it?​

 

If you already have an actual temporary table inside the database you wouldn't use COPY.  COPY is intended to transfer data from/to an external file (including stdin/stdout).

 

Generally:

 

(in psql)

BEGIN;

CREATE TEMP TABLE tmptbl ( cols );

\copy tmptbl from '/tmp/file-to-load.csv' with ( ... )

INSERT INTO tbl SELECT * FROM tmptbl;

COMMIT;

 

\copy in psql constructs an appropriate "COPY" SQL command, executes it on the server, and then funnels the contents of "file" to the server.

 

David J.

 

pgsql-novice by date:

Previous
From: "David G. Johnston"
Date:
Subject: Re: [NOVICE] COPY from temp table to main table insted of INSERT INTO
Next
From: "David G. Johnston"
Date:
Subject: Re: [NOVICE] COPY from temp table to main table insted of INSERT INTO