यदि आपका अंतिम फ़ील्ड हमेशा मौजूद रहता है (हालांकि trailing nullcols
सुझाव है कि यह नहीं है) और स्वरूपण पर आपका कुछ नियंत्रण है, आप CONTINUEIF
दूसरी पंक्ति को उसी तार्किक रिकॉर्ड के हिस्से के रूप में मानने का निर्देश।
अगर comments
फ़ील्ड हमेशा मौजूद है और दोहरे उद्धरण चिह्नों में संलग्न है तो आप यह कर सकते हैं:
...
truncate
continueif last != x'22'
into table ...
जो डेटा रिकॉर्ड को हैंडल करेगा जैसे:
S;Y;"Test 1"
F;N;"Test 2"
P;Y;"Test with
new line"
P;N;""
या यदि आपके पास टिप्पणी फ़ील्ड के बाद हमेशा एक सीमांकक होता है, चाहे वह आबाद हो या नहीं:
...
truncate
continueif last != ';'
into table ...
कौन संभालेगा:
S;Y;Test 1;
F;N;"Test 2";
P;Y;Test with
new line;
P;N;;
दोनों तरीके डेटा को इस प्रकार लोड करेंगे:
S M COMMENTS
- - ------------------------------
S Y Test 1
F N Test 2
P Y Test withnew line
P N
लेकिन यह डेटा से नई लाइन खो देता है। इसे बनाए रखने के लिए आपको टर्मिनेटिंग फील्ड डिलीमीटर मौजूद होना चाहिए, और इसके बजाय CONTINUEIF
आप रिकॉर्ड विभाजक को स्ट्रीम रिकॉर्ड प्रारूप का उपयोग करके बदल सकते हैं
:
...
infile 'C:\Users\lab.csv' "str ';\n'"
truncate
into table ...
"str ';\n'"
टर्मिनेटर को फील्ड टर्मिनेटर और एक नए लाइन कैरेक्टर के संयोजन के रूप में परिभाषित करता है। आपकी विभाजित टिप्पणी में केवल अंतिम पंक्ति पर वह संयोजन है। पिछले संस्करण के समान डेटा फ़ाइल के साथ, यह देता है:
S M COMMENTS
- - ------------------------------
S Y Test 1
F N Test 2
P Y Test with
new line
P N
4 rows selected.
चूंकि आप विंडोज़ पर हैं, इसलिए आपको \r
. शामिल करना पड़ सकता है प्रारूप में भी, उदा। "str ';\r\n'"
, लेकिन मैं इसकी जांच नहीं कर पा रहा हूं।