Re: restore/dup OIDs HELP!

Поиск
Список
Период
Сортировка
От Steve Crawford
Тема Re: restore/dup OIDs HELP!
Дата
Msg-id 20030106205356.26C58103D7@polaris.pinpointresearch.com
обсуждение исходный текст
Ответ на restore/dup OIDs HELP!  (Jack Flak <jack@flak.nospam.org>)
Список pgsql-admin
Would this work for you (if you can muck with the comm table temporarily
without causing problems)?

--Create a table with unique values
create temporary table communique as select distinct * from comm;

--Empty the table
delete from comm;
(or truncate comm if recent enough version or drop and recreate comm if it's
really large and an older version of PostgreSQL)

--Repopulate comm from commtemp
insert into comm select * from commtemp;

Cheers,
Steve

On Saturday 04 January 2003 10:30 pm, Jack Flak wrote:
> Greetings Group,
>
> I'm running 7.1.
>
> Basically, my question is this:  how do I delete an exact dup without
> deleting the original?
>
> Let me explain...
>
> I just accidentally ran a restore on my perfectly running database. When I
> originally made the dump file, I had OIDs turned on. I figured they were
> unique. Now, after the restore is done, I see that they are not.
>
> So now I have duplicate entries in a large table. They are duplicate all
> the way down to the OIDs!  I was stupid enough not to set a unique key
> field for this table when I designed it, so the system accepted the "new"
> entries with the exact same OIDs as already existed. However, almost all of
> my other tables do have unique keys set, so the dups were rejected. Check
> out my stupidity:
>
>
> # SELECT oid, sender, length(text), date_submitted  FROM comm  ORDER BY
> sender, date_submitted  LIMIT 20;
>   oid  | sender | length |     date_submitted
> -------+--------+--------+------------------------
>  61385 | 132    |   2179 | 2001-02-23 16:43:00-08
>  61385 | 132    |   2179 | 2001-02-23 16:43:00-08
>  61386 | 132    |   1313 | 2001-02-25 17:40:00-08
>  52234 | 154    |   2073 | 2001-05-07 23:40:00-07
>  52234 | 154    |   2073 | 2001-05-07 23:40:00-07
>  49588 | 168    |   3063 | 2002-03-20 12:04:00-08
>  49588 | 168    |   3063 | 2002-03-20 12:04:00-08
>  49592 | 168    |   5243 | 2002-03-26 10:54:00-08
>  49592 | 168    |   5243 | 2002-03-26 10:54:00-08
>  49801 | 188    |   1010 | 2000-08-22 12:30:00-07
>  49801 | 188    |   1010 | 2000-08-22 12:30:00-07
>  49802 | 188    |    307 | 2000-08-22 12:37:00-07
>  49802 | 188    |    307 | 2000-08-22 12:37:00-07
>  49803 | 188    |   1790 | 2000-08-22 12:39:00-07
>  49803 | 188    |   1790 | 2000-08-22 12:39:00-07
>  49804 | 188    |    531 | 2000-08-22 12:41:00-07
>  49804 | 188    |    531 | 2000-08-22 12:41:00-07
>  49805 | 188    |   4700 | 2000-08-22 12:45:00-07
>  49805 | 188    |   4700 | 2000-08-22 12:45:00-07
>  49809 | 188    |   2855 | 2000-08-22 12:47:00-07
> (20 rows)
>
>
> The 'sender' field, plus the 'date_submitted' field are used as "the key"
> for each entry.
> If you're sharp, you'll notice that for 'sender' 132, there are three
> total, one dup.  This is because I tried to delete one of the dups.  This
> was a mistake, as BOTH were deleted.  I re-added it again from the dump
> file manually (boy, that was really not fun).
>
> So, once again, here's my question:  how do I go about deleting the
> duplicate entries WITHOUT also deleting the originals?
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly

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

Предыдущее
От: Jeff Boes
Дата:
Сообщение: ANALYZE not working?
Следующее
От: Ron Mayer
Дата:
Сообщение: Re: ANALYZE not working?