2008-10-17 13 views
9

में लाइन द्वारा सीएसवी फाइल लाइन को कैसे पढ़ा जाए मैं एक एएसपी पेज का उपयोग कर रहा हूं जहां मुझे एक सीएसवी फ़ाइल पढ़नी है और इसे डीबी टेबल "कर्मचारी" में डालना है। मैं TestReader का एक वस्तु बना रहा हूँ। सीएसवी फ़ाइल की पंक्तियों/अभिलेखों की संख्या को निष्पादित करने के लिए मैं लूप कैसे लिख सकता हूं जिसे पढ़ा जा रहा है?वीबीस्क्रिप्ट

उत्तर

15

फ़ाइल को स्वयं पार्स करने का प्रयास न करें, आप केवल खुद को सिरदर्द देंगे। न्यूलाइन और कॉमा पर विभाजित होने से इसके लिए काफी कुछ है।

आप ओएलईडीबी का उपयोग किसी रिकॉर्डसेट में फ़ाइल खोलने के लिए कर सकते हैं और इसे डीबी टेबल के रूप में पढ़ सकते हैं। कुछ ऐसा:

Dim strConn, conn, rs 

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ 
Server.MapPath("path to folder") & ";Extended Properties='text;HDR=Yes;FMT-Delimited';" 

Set conn = Server.CreateObject("ADODB.Connection") 
conn.Open strConn 

Set rs = Server.CreateObject("ADODB.recordset") 
rs.open "SELECT * FROM myfile.csv", conn 

while not rs.eof 
    ... 
    rs.movenext 
wend 

मेरा vbscript जंगली है, तो वाक्यविन्यास को सत्यापित करें।

संपादित करें: हार्पो की टिप्पणी फ़ील्ड परिभाषाओं के बारे में एक अच्छी बात लाती है। Schema.ini फ़ाइल को परिभाषित करने से आप अपेक्षित फ़ील्ड की संख्या और डेटाटाइप को परिभाषित कर सकते हैं। देखें: आप schema.ini फ़ाइल को परिभाषित करके इसे संभाल सकते हैं। देखें: http://msdn.microsoft.com/en-us/library/ms709353.aspx

+0

सावधान: क्षेत्र गिनती पहली पंक्ति पर आधारित है। इसलिए यदि फ़ाइल में किसी भी बिंदु पर फ़ील्ड की संख्या बढ़ जाती है, तो आप अतिरिक्त फ़ील्ड कैप्चर नहीं कर सकते हैं। यह मेरे मामले में महत्वपूर्ण है, इसलिए मैंने अपना खुद का लुढ़काया (हालांकि वीबीस्क्रिप्ट में नहीं)। – harpo

+0

यह सच है। आप schema.ini फ़ाइल (http://msdn.microsoft.com/en-us/library/ms709353.aspx) को परिभाषित करके इस सीमा से बच सकते हैं। यह आपको फ़ील्ड के डेटा प्रकारों को अर्हता प्राप्त करने की अनुमति देता है (डिफ़ॉल्ट रूप से, '0001' को '1' के रूप में पढ़ा जाएगा) –

+0

फ़ोल्डर के पथ के बाद आपको सेमी-कोलन की आवश्यकता है - सर्वर.मैपपाथ ("फ़ोल्डर के लिए पथ";) - लेकिन इसने मुझे मेरी सीएसवी फ़ाइल को पार्स करने की कोशिश करने के कुछ घंटे बचाए हैं - धन्यवाद! – whostolemyhat

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