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.