Re: Normalising an existing table - how?

Поиск
Список
Период
Сортировка
От Phil Endecott
Тема Re: Normalising an existing table - how?
Дата
Msg-id 4268211@chezphil.org
обсуждение исходный текст
Ответ на Re: Normalising an existing table - how?  (Graham Leggett <minfrin@sharp.fm>)
Список pgsql-sql
Graham Leggett <minfrin@sharp.fm> wrote:
> >>- Select the money column from the table
> >>- Populate the new normalised table with each row containing
> >>  the value from the original money column
> >>- Write the primary keys of the new rows in the normalised
> >>  table, back to a new column in the original table added for
> >>  this purpose.
> 
> > Change the order.  Do the third step first:
> > 
> > alter table T add column X integer;
> > update T set X = nextval(somesequence);
> > 
> > Now do the first and second steps together:
> > 
> > select X, MoneyColumn from T into NewTable;
> > 
> > Is this the sort of thing you need?
> 
> I think it is - though the select foo into NewTable part, does
> NewTable have to be empty first, or can it already exist?
> 
> In my case NewTable has some rows in it already, as the database is 
> currently partially normalised - I need to finish the job.

Check the docs.  I believe that SELECT INTO does the same as CREATE TABLE AS, i.e. it creates a new table.  It will
presumablyfail if the table already exists.  You probably need INSERT SELECT, i.e.
 
 insert into NewTable select X, MoneyColumn from T;


--Phil.


В списке pgsql-sql по дате отправления:

Предыдущее
От: Geoffrey
Дата:
Сообщение: Re: feature request ?
Следующее
От: sad (by way of sad
Дата:
Сообщение: Re: feature request ?