PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara terbaik untuk mencegah duplikat data pada copy csv postgresql

Upser

Jawaban oleh Linoff benar tetapi dapat disederhanakan sedikit dengan Postgres 9.5 fitur ”UPSERT” baru (alias MERGE ). Fitur baru tersebut diimplementasikan di Postgres sebagai INSERT ON CONFLICT sintaks.

Daripada secara eksplisit memeriksa pelanggaran indeks unik, kita dapat membiarkan ON CONFLICT klausul mendeteksi pelanggaran. Kemudian kita DO NOTHING , artinya kita mengabaikan upaya untuk INSERT tanpa repot-repot mencoba UPDATE . Jadi jika kita tidak bisa menyisipkan, kita lanjutkan ke baris berikutnya.

Kami mendapatkan hasil yang sama dengan kode Linoff tetapi kehilangan WHERE klausa.

INSERT INTO bigtable(col1, … )
    SELECT col1, …
    FROM stagingtable st
ON CONFLICT idx_bigtable_col1_col2_col
DO NOTHING
;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengecualian dalam JPA saat menggunakan file benih untuk PostgreSQL

  2. Uji fungsi HASH untuk partisi tabel Postgres

  3. Hibernasi menyimpan model Pengguna ke Postgres

  4. Mewakili waktu mendatang di PostgreSQL

  5. PostGIS:Kueri dimensi z dan m (linestringzm)