डेटा आयात करें
COPY
सब कुछ एक अस्थायी स्टेजिंग टेबल . के लिए और अपनी लक्ष्य तालिका में केवल नए शीर्षक डालें।
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;
आईडी एक serial
. के साथ स्वचालित रूप से उत्पन्न होनी चाहिए कॉलम tbl_id
tbl
. में ।
LEFT JOIN
/ IS NULL
निर्माण पहले से मौजूद शीर्षकों को अयोग्य घोषित करता है। NOT EXISTS
एक और संभावना होगी।
DISTINCT
अस्थायी तालिका में आने वाले डेटा में डुप्लिकेट को रोकता है tmp
।
ANALYZE
यह सुनिश्चित करने के लिए उपयोगी है कि क्वेरी प्लानर एक समझदार योजना चुनता है, और अस्थायी तालिकाओं का विश्लेषण ऑटोवैक्यूम द्वारा नहीं किया जाता है।
चूंकि आपके पास 3 मिलियन आइटम हैं, यह temp_buffer
. के लिए सेटिंग बढ़ाने के लिए भुगतान कर सकता है (केवल इस सत्र के लिए ):
SET temp_buffers = 1000MB;
या कितना भी आप खर्च कर सकते हैं और रैम में अस्थायी तालिका को पकड़ने के लिए पर्याप्त है, जो बहुत तेज है। नोट:पहले किया जाना चाहिए सत्र में - किसी भी अस्थायी वस्तु के बनने से पहले।
आईडी पुनर्प्राप्त करें
आयातित डेटा के लिए सभी आईडी देखने के लिए:
SELECT tbl.tbl_id, tbl.title
FROM tbl
JOIN tmp USING (title)
उसी सत्र में! सत्र के अंत में एक अस्थायी तालिका स्वचालित रूप से हटा दी जाती है।