最後に、これは同僚によって解決されました。
dup の数を見てみましょう。
SELECT COUNT(*) FROM _sample_table_delme_data_files ;
count
-------
12728
(1 row)
次に、ソース テーブルに別の列を追加して、同様の行を区別できるようにします。
ALTER TABLE _sample_table_delme_data_files ADD COLUMN id2 serial;
複製が表示されるようになりました。
SELECT id, id2 FROM _sample_table_delme_data_files ORDER BY id LIMIT 10;
id | id2
--------+------
198748 | 6449
198748 | 85
198801 | 166
198801 | 6530
198829 | 87
198829 | 6451
198926 | 88
198926 | 6452
199062 | 6532
199062 | 168
(10 rows)
そしてそれらを削除します:
DELETE FROM _sample_table_delme_data_files
WHERE id2 IN (SELECT max(id2) FROM _sample_table_delme_data_files
GROUP BY id
HAVING COUNT(*)>1);
それが機能したことを見てみましょう:
SELECT id FROM _sample_table_delme_data_files GROUP BY id HAVING COUNT(*)>1;
id
----
(0 rows)
補助柱を取り外します。
ALTER TABLE _sample_table_delme_data_files DROP COLUMN id2;
ALTER TABLE
残りの行を宛先テーブルに挿入します。
INSERT INTO data_files (SELECT * FROM _sample_table_delme_data_files);
INSERT 0 6364