Importér data
COPY alt til et midlertidigt iscenesættelsesbord og indsæt kun nye titler i din måltabel.
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'er skal genereres automatisk med en serial kolonne tbl_id i tbl .
LEFT JOIN / IS NULL konstruktion diskvalificerer allerede eksisterende titler. NOT EXISTS ville være en anden mulighed.
DISTINCT forhindrer dubletter i de indgående data i den midlertidige tabel tmp .
ANALYZE er nyttig for at sikre, at forespørgselsplanlæggeren vælger en fornuftig plan, og at midlertidige tabeller ikke analyseres af autovakuum.
Da du har 3 millioner varer, kan det betale sig at hæve indstillingen for temp_buffer (kun for denne session ):
SET temp_buffers = 1000MB;
Eller hvor meget du har råd til og er nok til at holde vikarbordet i RAM, hvilket er meget hurtigere. Bemærk:skal gøres først i sessionen - før der oprettes midlertidige objekter.
Hent ID'er
For at se alle ID'er for de importerede data:
SELECT tbl.tbl_id, tbl.title
FROM tbl
JOIN tmp USING (title)
I samme session! En midlertidig tabel slettes automatisk i slutningen af sessionen.