मेरे पास एक फ़ाइल है जिसमें संख्यात्मक मानों के 3 से 4 कॉलम हो सकते हैं जो अल्पविराम द्वारा अलग किए जाते हैं। जब वे पंक्ति के अंत में होते हैं, तो खाली फ़ील्ड को अपवाद के साथ परिभाषित किया जाता है:
1,2,3,4,5
1,2,3,,5
1,2,3
निम्न तालिका MySQL में बनाई गई थी:
+ ------- + -------- + ------ + ----- + --------- + ------- + | फील्ड | प्रकार | नल | कुंजी | डिफ़ॉल्ट | अतिरिक्त | + ------- + -------- + ------ + ----- + --------- + ------- + | एक | int (1) | हाँ | | नल | | | दो | int (1) | हाँ | | नल | | | तीन | int (1) | हाँ | | नल | | | चार | int (1) | हाँ | | नल | | | पांच | int (1) | हाँ | | नल | | + ------- + -------- + ------ + ----- + --------- + ------- +
मैं MySQL LOAD कमांड का उपयोग करके डेटा लोड करने का प्रयास कर रहा हूं:
LOAD DATA INFILE '/tmp/testdata.txt' INTO TABLE moo FIELDS
TERMINATED BY "," LINES TERMINATED BY "\n";
परिणामी तालिका:
+ ------ + ------ + ------- + ------ + ------ + | एक | दो | तीन | चार | पांच | + ------ + ------ + ------- + ------ + ------ + | 1 | 2 | 3 | 4 | 5 | | 1 | 2 | 3 | 0 | 5 | | 1 | 2 | 3 | नल | नल | + ------ + ------ + ------- + ------ + ------ +
समस्या इस तथ्य के साथ है कि जब कोई फ़ील्ड कच्चे डेटा में खाली होती है और परिभाषित नहीं होती है, तो किसी कारण से MySQL कॉलम डिफ़ॉल्ट मान (जो NULL है) का उपयोग नहीं करता है और शून्य का उपयोग करता है। जब फ़ील्ड पूरी तरह से अनुपलब्ध है, तो NULL का सही उपयोग किया जाता है।
दुर्भाग्य से, मुझे इस स्तर पर NULL और 0 के बीच अंतर करने में सक्षम होना है, इसलिए किसी भी मदद की सराहना की जाएगी।
धन्यवाद एस।
संपादित करें
SHOW WARNINGS का उत्पादन:
+ --------- + ------ + -------------------------------- ------------------------ + | स्तर | कोड | संदेश | + --------- + ------ + -------------------------------- ------------------------ + | चेतावनी | 1366 | गलत पूर्णांक मान: पंक्ति 2 पर कॉलम 'चार' के लिए | | चेतावनी | 1261 | पंक्ति 3 में सभी स्तंभों का डेटा नहीं है | | चेतावनी | 1261 | पंक्ति 3 में सभी स्तंभों का डेटा नहीं है | + --------- + ------ + -------------------------------- ------------------------ +
LOAD DATA
। डेटा स्कीमा परिवर्तन पर d6tstack SQL उदाहरण अनुभाग देखें ।