delete multiple duplicate rows

bingung banget karena kejadiannya di sistem production, gara2 human error yang insert data secara manual ke sebuah tabel, dengan jumlah data yang ke-dobel sekitar 2.154.000 gara2 si tabel engga pake primary key jadi datanya masuk2 aja.

sebenernya ini kasus umum yang sering dilakukan oleh sistem / human error. cuman agak nggak common aja kalo sampe kejadian di production, haree genee?? udah pake normalisasi masih ada yang dobel?? huff..

ternyata oh ternyata… oracle memudahkan semuanya karena masing2 row memiliki unique id yang disebut rowid berupa bilangan heksa. thanx to oracle🙂 ga perlu setengah mati misahin datanya, tinggal pake aja query seperti ini :

DELETE FROM table_name

WHERE rowid not in

(SELECT MAX(rowid)

FROM table_name

GROUP BY column1, column2, column3...) ;

hmf… tapi ternyata query itu tidak cukup efektif untuk mendelete 2 juta lebih record dengan cepat, karena ada klausa not in yang lumayan bikin pusing. Jadi alternatif lainnya akhirnya aku pake software TOAD terbaru yang ada fasilitas delete multiple duplicate data. pilih menu database – compare – duplicate data. Trus tinggal pencet ctrl+A — klik kanan — deleted all selected rows . o iya kalau mau keep data 1 aja harus diedit dulu querynya tanda “<> ” diganti “>”, record yang dobel biar ga semua didelete tapi di-keep satu record yang saja . Kalao ga mau TOADnya nge hang, ya nyorotnya dikit2 aja.

Selesai deh perkara…

catatan : ini sekedar dokumentasi buat pribadi, jadi jangan dikomentari ya, hehehe🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s