चूँकि आप पंक्तियों की संख्या/प्रकार पहले से नहीं जानते हैं, तो मेरा सुझाव है कि आप ऐसा करें:
- (1) अपने सीएसवी को एक (अस्थायी?) तालिका में बिना विभाजन के एकल टेक्स्ट कॉलम के साथ आयात करें।
backspace
का उपयोग करें एक सीमांकक के रूप में चरित्र ताकि पूरी आयातित लाइन बरकरार रहे;
CREATE TABLE IF NOT EXISTS rawtext_t (rawtext text);
COPY rawtext_t FROM <file_name> WITH (format 'csv', delimiter E'\b');
- (2) एक क्वेरी चलाएं जो सीएसवी को टेक्स्ट ऐरे में विभाजित करती है
- फ़ंक्शन
parse_csv
, और फिर प्रासंगिक के रूप में पाठ सरणियों के परिणामी सेट का उपयोग करें (शायद नक्शा/'वास्तविक' लक्ष्य तालिका में डालें)
WITH rawdata AS
(
SELECT parse_csv(rawtext) arr FROM rawtext_t
)
INSERT INTO real_t (...fields...)
SELECT arr[1], arr[3], ...
FROM rawdata;
TRUNCATE TABLE rawtext_t;
आप एक WHERE
जोड़ सकते हैं दूसरे में खंड SELECT
यदि आवश्यक हो तो आने वाली पंक्तियों को फ़िल्टर करने के लिए कथन।
दूसरा विकल्प - मेरी समझ में एक बहुत अच्छा है - उत्कृष्ट file_textarray_fdw का उपयोग करना है कमोबेश उसी प्रभाव के लिए।
आशा है कि इससे आपको विचार और सहायता मिलती है।