Обсуждение: Copy data from table to table

Поиск
Список
Период
Сортировка

Copy data from table to table

От
"Keith Worthington"
Дата:
Hi All,

I can not think of a way to copy data directly betweeen two tables.

I can only think of two ways to copy the data indirectly.

Method 1:  Write a function that loops through the results of a select query
running individual inserts for each record.

Method 2:  Use SELECT INTO to put the desired data in a temporoary table; then
use COPY to store the data in a file and finally use COPY to read the data
from the file to the target table.

I have implemented the first method for situations where the source data ends
up in multiple tables but I want to check with all of you prior to creating a
function to do this for a single target table.

As a curious point of information I worked with a database once that allowed
you to SELECT INTO an existing table.  It was handy.

Kind Regards,
Keith

Re: Copy data from table to table

От
Michael Fuhr
Дата:
On Wed, Apr 27, 2005 at 09:16:09AM -0400, Keith Worthington wrote:
>
> I can not think of a way to copy data directly betweeen two tables.

Have you tried INSERT ... SELECT?

INSERT INTO foo (a, b, c) SELECT a, b, c FROM bar;

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

Re: Copy data from table to table

От
George Weaver
Дата:
Hi Keith,

Why not:

    INSERT INTO tablea SELECT * FROM tableb;

Or am I missing something about what you're trying to achieve?

Regards,
George


----- Original Message -----
From: "Keith Worthington" <keithw@narrowpathinc.com>
To: "PostgreSQL Novice" <pgsql-novice@postgresql.org>
Sent: Wednesday, April 27, 2005 8:16 AM
Subject: [NOVICE] Copy data from table to table


> Hi All,
>
> I can not think of a way to copy data directly betweeen two tables.
>
> I can only think of two ways to copy the data indirectly.
>
> Method 1:  Write a function that loops through the results of a select
> query
> running individual inserts for each record.
>
> Method 2:  Use SELECT INTO to put the desired data in a temporoary table;
> then
> use COPY to store the data in a file and finally use COPY to read the data
> from the file to the target table.
>
> I have implemented the first method for situations where the source data
> ends
> up in multiple tables but I want to check with all of you prior to
> creating a
> function to do this for a single target table.
>
> As a curious point of information I worked with a database once that
> allowed
> you to SELECT INTO an existing table.  It was handy.
>
> Kind Regards,
> Keith
>
> ---------------------------(end of broadcast)---------------------------
> TIP 9: the planner will ignore your desire to choose an index scan if your
>      joining column's datatypes do not match
>



Re: Copy data from table to table

От
Frank Bax
Дата:
At 09:16 AM 4/27/05, Keith Worthington wrote:

>Hi All,
>
>I can not think of a way to copy data directly betweeen two tables.
>
>I can only think of two ways to copy the data indirectly.
>
>Method 1:  Write a function that loops through the results of a select query
>running individual inserts for each record.
>
>Method 2:  Use SELECT INTO to put the desired data in a temporoary table; then
>use COPY to store the data in a file and finally use COPY to read the data
>from the file to the target table.


INSERT INTO ...  (SELECT FROM ...)

http://www.postgresql.org/docs/8.0/interactive/sql-insert.html

         What is the last word in synopsis?


Re: Copy data from table to table

От
Keith Worthington
Дата:
Frank Bax wrote:
> At 09:16 AM 4/27/05, Keith Worthington wrote:
>
>> Hi All,
>>
>> I can not think of a way to copy data directly betweeen two tables.
>>
>> I can only think of two ways to copy the data indirectly.
>>
>> Method 1:  Write a function that loops through the results of a select
>> query
>> running individual inserts for each record.
>>
>> Method 2:  Use SELECT INTO to put the desired data in a temporoary
>> table; then
>> use COPY to store the data in a file and finally use COPY to read the
>> data
>> from the file to the target table.
>
>
>
> INSERT INTO ...  (SELECT FROM ...)
>
> http://www.postgresql.org/docs/8.0/interactive/sql-insert.html
>

Thank you all very much.  I had not run across this command yet.  I have
run a few queries using it and it is going to work quite nicely for me.

--
Kind Regards,
Keith