मेरे पास एक फ़ाइल है जिसमें संख्यात्मक मानों के 3 से 4 कॉलम हो सकते हैं जो अल्पविराम से अलग होते हैं। खाली फील्ड अपवाद के साथ परिभाषित कर रहे हैं जब वे पंक्ति के अंत में कर रहे हैं:सीएसवी डेटा से MySQL लोड नल मान
1,2,3,4,5
1,2,3,,5
1,2,3
निम्न तालिका MySQL में बनाया गया था:
+-------+--------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------+------+-----+---------+-------+ | one | int(1) | YES | | NULL | | | two | int(1) | YES | | NULL | | | three | int(1) | YES | | NULL | | | four | int(1) | YES | | NULL | | | five | int(1) | YES | | NULL | | +-------+--------+------+-----+---------+-------+
मैं MySQL लोड आदेश का उपयोग कर डेटा लोड करने के कोशिश कर रहा हूँ :
LOAD DATA INFILE '/tmp/testdata.txt' INTO TABLE moo FIELDS
TERMINATED BY "," LINES TERMINATED BY "\n";
जिसके परिणामस्वरूप तालिका:
+------+------+-------+------+------+ | one | two | three | four | five | +------+------+-------+------+------+ | 1 | 2 | 3 | 4 | 5 | | 1 | 2 | 3 | 0 | 5 | | 1 | 2 | 3 | NULL | NULL | +------+------+-------+------+------+
समस्या इस तथ्य के साथ निहित है कि जब कच्चे डेटा में कोई फ़ील्ड खाली होता है और परिभाषित नहीं किया जाता है, तो किसी कारण से MySQL कॉलम डिफ़ॉल्ट मान (जो न्यूल है) का उपयोग नहीं करता है और शून्य का उपयोग करता है। जब क्षेत्र पूरी तरह से गायब हो जाता है तो NULL सही ढंग से उपयोग किया जाता है।
दुर्भाग्यवश, मुझे इस चरण में न्यूल और 0 के बीच अंतर करने में सक्षम होना चाहिए ताकि किसी भी मदद की सराहना की जा सके।
धन्यवाद एस
संपादित
शो चेतावनी के उत्पादन:
+---------+------+--------------------------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------------------------+ | Warning | 1366 | Incorrect integer value: '' for column 'four' at row 2 | | Warning | 1261 | Row 3 doesn't contain data for all columns | | Warning | 1261 | Row 3 doesn't contain data for all columns | +---------+------+--------------------------------------------------------+
क्या इसका प्रदर्शन प्रभाव पड़ता है? – Blacksonic
सैद्धांतिक रूप से, मुझे लगता है - लेकिन यह सभी स्मृति में है, और केवल डेटा की थोड़ी मात्रा है प्रति पंक्ति, इसलिए मैं छवि को infinitesimal होगा, लेकिन अगर आपको लगता है कि यह एक समस्या हो सकती है तो आपको इसका परीक्षण करना चाहिए। –
मुझे यह जवाब वाकई पसंद है। उपयोगकर्ताओं को एक्सेल के लिए 'IFNULL (Col,' ')' में 'IFNULL (Col,' ')' का उपयोग करके एक सीएसवी डाउनलोड करते समय खाली स्ट्रिंग्स '' '' देख सकते हैं, लेकिन तब अपलोड उन्हें शून्य \ n से निपटने के लिए शून्य बनाते हैं। सीएसवी में। धन्यवाद! – chrisan