2012-08-02 19 views
21

की पहली पंक्ति को अनदेखा करें मेरे पास काफी बड़ी .txt फ़ाइल ~ 9 जीबी है और मैं इस txt फ़ाइल को पोस्टग्रेज़ में लोड करना चाहूंगा। पहली पंक्ति शीर्षलेख है, उसके बाद सभी डेटा। यदि मैं सीधे डेटा को कॉपी करता हूं, तो हेडर एक त्रुटि का कारण बनता है कि डेटा प्रकार मेरी पोस्टग्रेस तालिका से मेल नहीं खाता है, इसलिए मुझे इसे किसी भी तरह से हटाने की आवश्यकता होगी।पोस्टग्रेस कॉपी कैसे करें बड़ी txt फ़ाइल

नमूना डेटा: ProjectId, MailId, MailCodeId, prospectid, ListId, datemailed, राशि, दान दिया, ज़िप, zip4, VectorMajor, VectorMinor, packageid, चरण, databaseid, AMOUNT2

15,53568419,89734,219906,15,2011-05-11 00:00:00,0,0,90720,2915,NonProfit,POLICY,230,3,1,0 

16,84141863,87936,164657,243,2011-03-10 00:00:00,0,0,48362,2523,NonProfit,POLICY,1507,5,1,0 

16,81442028,86632,15181625,243,2011-01-19 00:00:00,0,0,11501,2115,NonProfit,POLICY,1508,2,1,0 

जबकि कॉपी समारोह postgres के लिए "शीर्षक" सेटिंग कि पहली पंक्ति की उपेक्षा कर सकते है, यह केवल csv फ़ाइलें के लिए काम करता है:

0,123,516:

copy training from 'C:/testCSV.csv' DELIMITER ',' csv header; 

जब मैं अपने txt फ़ाइल पर उपरोक्त कोड को चलाने के लिए प्रयास करते हैं, यह एक त्रुटि हो जाता है

copy training from 'C:/testTXTFile.txt' DELIMITER ',' csv header 
ERROR: unquoted newline found in data 
HINT: Use quoted CSV field to represent newline. 

मैं "बोली" और "भागने" जोड़ने की कोशिश की है जिम्मेदार बताते हैं लेकिन आदेश सिर्फ txt फ़ाइल के लिए काम करने के लिए प्रतीत नहीं होगा:

copy training from 'C:/testTXTFile.txt' DELIMITER ',' csv header quote as E'"' escape as E'\\N'; 
ERROR: COPY escape must be a single one-byte character 
वैकल्पिक रूप से

, मैं जावा चलाने के बारे में सोचा या एक अलग stagging बनाने पहली पंक्ति को हटाने के लिए टेबल ... लेकिन ये समाधान विशाल और समय लेने वाले हैं। मुझे हेडर की पहली पंक्ति को हटाने के लिए 9 जीबी डेटा लोड करने की आवश्यकता होगी ... क्या txt फ़ाइल की पहली पंक्ति को आसानी से हटाने के लिए वहां अन्य समाधान हैं ताकि मैं अपने पोस्टग्रेज़ डेटाबेस में डेटा लोड कर सकूं?

+2

_header_ विकल्प पहली पंक्ति को दूर करता है, कोई बाहरी उपयोगिता है कि के लिए आवश्यक है। यदि इससे "डेटा में अनगिनत नई लाइन" मिलती है, तो यह एक प्रश्न उठाता है: आपकी फ़ाइल की संरचना वास्तव में क्या है? यह [सीएसवी] से भिन्न कैसे है (http://en.wikipedia.org/wiki/Comma-separated_values)? –

उत्तर

38

सीएसवी विकल्प के साथ उपयोग हैडर विकल्प:

WITH CSV HEADER DELIMITER AS ',' 

HEADER Specifies that the file contains a header line with the names of each column in the file. On output, the first line contains the column names from the table, and on input, the first line is ignored. This option is allowed only when using CSV format.

+0

क्षमा करें, मेरा misatke, सीएसवी हेडर काम करता है। मेरी txt फ़ाइल में डेटा वास्तव में मेरी सीएसवी फ़ाइल से एक अलग प्रारूप था जिसके परिणामस्वरूप त्रुटि हुई। – thiakx

संबंधित मुद्दे