Impor data
COPY
semuanya ke tabel pementasan sementara dan masukkan hanya judul baru ke dalam tabel target Anda.
CREATE TEMP TABLE tmp(title text);
COPY tmp FROM 'path/to/file.csv';
ANALYZE tmp;
INSERT INTO tbl
SELECT DISTINCT tmp.title
FROM tmp
LEFT JOIN tbl USING (title)
WHERE tbl.title IS NULL;
ID harus dibuat secara otomatis dengan serial
kolom tbl_id
di tbl
.
LEFT JOIN
/ IS NULL
konstruksi mendiskualifikasi judul yang sudah ada. NOT EXISTS
akan menjadi kemungkinan lain.
DISTINCT
mencegah duplikasi dalam data yang masuk di tabel sementara tmp
.
ANALYZE
berguna untuk memastikan perencana kueri memilih rencana yang masuk akal, dan tabel sementara tidak dianalisis oleh autovacuum.
Karena Anda memiliki 3 juta item, mungkin perlu membayar untuk menaikkan setelan temp_buffer
(untuk sesi ini saja ):
SET temp_buffers = 1000MB;
Atau seberapa banyak Anda mampu dan cukup untuk menahan tabel temp dalam RAM, yang jauh lebih cepat. Catatan:harus dilakukan pertama dalam sesi - sebelum objek temp dibuat.
Ambil ID
Untuk melihat semua ID untuk data yang diimpor:
SELECT tbl.tbl_id, tbl.title
FROM tbl
JOIN tmp USING (title)
Di sesi yang sama! Tabel sementara dijatuhkan secara otomatis di akhir sesi.