2008-11-13 21 views
6

मैं एक्सेल फाइलों से डेटा अपलोड करने के लिए .NET वेब एप्लिकेशन से डीबी के साथ इंटरफ़ेस कैसे बनाएगा इस पर किसी भी सर्वोत्तम प्रथाओं या विचारों की तलाश कर रहा हूं क्या मुझे एक तंत्र का उपयोग करना चाहिए जो सभी को अनुमति देता है रिकॉर्ड्स को लोड किया जाना चाहिए और त्रुटियों को झंडे करना चाहिए या क्या मुझे एक तंत्र का उपयोग करना चाहिए जो त्रुटि होने पर लोड को रोक देता है।डेटाबेस में फ़ाइलों को अपलोड करने के लिए सर्वोत्तम अभ्यास

मुझे इससे पहले कभी भी इस तरह की आवश्यकता से निपटना नहीं था, इसलिए कोई मदद सुपर होगी!

धन्यवाद

उत्तर

1

यदि आपका डीबी में डेटा अखंडता के लिए महत्वपूर्ण है, डेटा आयात करने के लिए त्रुटियाँ हैं या अपने डीबी के सत्यापन की आवश्यकताओं को पूरा नहीं करता है कि अनुमति नहीं है।

चूंकि ये एक्सेल फ़ाइलें हैं, इसलिए उपयोगकर्ता को डेटा को ठीक करने के लिए किसी अन्य इंटरफ़ेस का उपयोग करने की कोशिश करने के बजाय Excel फ़ाइल में डेटा को सही करने के लिए यह आसान होना चाहिए। बस सुनिश्चित करें कि त्रुटि संदेश उपयोगकर्ता को निर्देश देते हैं कि समस्या किस क्षेत्र में है और स्पष्ट रूप से बताएं कि क्या गलत है।

+0

हालांकि सत्यापन अच्छा है, सुनिश्चित करें कि आप जितना संभव हो उतना कच्चे प्रारूप में संग्रहित कर रहे हैं। आप उन हजारों स्थानों में रूपांतरणों को एक हज़ार बार कर रहे हैं जिनकी आप उम्मीद नहीं करेंगे, और कच्चे संस्करण को यथासंभव गैर-रूपांतरित करने के रूप में एक बड़ी जीत है। – aronchick

0

आप एक ब्लॉब के रूप में डीबी में एक्सेल फ़ाइलें डाल करना चाहते हैं? या आप फ़ाइलों को पार्स करना चाहते हैं और रिकॉर्ड को डीबी में फाइलों में रखना चाहते हैं?

मुझे लगता है कि यह बाद वाला है।

उपयोगकर्ता के रूप में मैं यह जानना चाहता हूं कि त्रुटियां क्या हैं इसलिए मैं उन्हें ठीक कर सकता हूं और पुनः प्रयास कर सकता हूं। मुझे लगता है कि मैं फिर से प्रयास कैसे करता हूं इस पर निर्भर करता है कि मैं कितना डेटा अपलोड कर रहा हूं।

मैं एक संकर समाधान करने की कोशिश करता हूं .. अगर कुछ त्रुटियां हैं तो उन त्रुटियों को ठीक करने के लिए स्क्रीन दिखाती है ताकि उपयोगकर्ता जल्दी से आगे बढ़ सके। यदि त्रुटियों में से एक टन है तो आपको बस इसे ही करना चाहिए और उपयोगकर्ता को फिर से प्रयास करना चाहिए।

जहां तक ​​डीबी। या तो एक अलग टेबल है जो अपलोड होने तक अपलोड हो जाती है और आपके "असली" डेटा के साथ मिलती है, या एक अपलोड यूनीकआईड कॉलम है ताकि आप बिना किसी झगड़े के किसी अपलोड को रोल-बैक कर सकें।

हटाने TableName जहां UploadUniqueId = 'GUID'

2

आपको डेटा अपलोड करना चाहिए और फिर सत्यापन को विफल करने में विफल होने पर इसे ध्वजांकित करना चाहिए। एक मचान तालिका में डाल करने के लिए थोक लोड एपीआई का उपयोग -

  • ADO.Net थोक लोड एपीआई: वास्तव में डेटा लोड हो रहा के लिए, आप कुछ ही विकल्प हैं। नीचे स्निपेट एक प्रक्रिया को एक सीएसवी फ़ाइल खोलने के लिए दिखाता है और प्रोग्रामिक रूप से इसे स्टेजिंग तालिका में लोड करता है।

public void Load() { 
     bool OK = File.Exists(_filename); 
     if (OK) { 
      string sql = String.Format("Select * from {0}", FileName); 
      OleDbConnection csv = new OleDbConnection(); 
      OleDbCommand cmd = new OleDbCommand(sql, csv); 
      OleDbDataReader rs = null; 
      SqlConnection db = null; 
      SqlCommand clear = null; 

      SqlBulkCopy bulk_load = null; 
      try { 
        // Note two connections: one from the csv file 
        // and one to the database; 
        csv = new OleDbConnection(); 
        csv.ConnectionString = ConnectionString; 
        csv.Open(); 
        cmd = new OleDbCommand(sql, csv); 
        rs = cmd.ExecuteReader(); 

        // Dung out the staging table 
        db = // [Create A DB conneciton Here] 
        clear = new SqlCommand("Truncate table Staging", db); // Left to the reader 
        clear.ExecuteNonQuery(); 

        // Import into the staging table 
        bulk_load = new SqlBulkCopy(db); 
        bulk_load.DestinationTableName = Destination; // Actually an instance var 
        bulk_load.WriteToServer(rs); 
       } catch (Exception ee) { 
        string summary = ee.Message; 
        string detail = ee.StackTrace; 
        //Notify(DisplayType.error, summary, detail); 
       } finally { 
        if (rs != null) rs.Close(); 
        if (csv != null) csv.Close(); 
        if (bulk_load != null) bulk_load.Close(); 
       } 
      } 
     } 
  • उपयोग बीसीपी या SSIS आयात करने के लिए, या तो स्प्रेडशीट या .CSV फ़ाइल से से सीधे ।
4

मैं निम्नलिखित दृष्टिकोणों का प्रयास करूंगा जो अतीत में अच्छी तरह से काम कर चुके हैं।

  1. उपयोगकर्ता को फ़ाइल अपलोड करने की अनुमति दें, इसे कहीं डिस्क पर रखें।
  2. कुछ ग्रिड में फ़ाइल के परिणाम बाध्य करें (आप पारंपरिक कनेक्शन/कमांड ऑब्जेक्ट्स का उपयोग कर ओडीबीसी/ओएलई डीबी का उपयोग कर एक्सेल फाइलों से कनेक्ट कर सकते हैं)।
  3. व्यवसाय नियमों के कुछ सेट के आधार पर ग्रिड में पंक्तियों के सत्यापन को लागू करें (एक्सेल डेटा आमतौर पर काफी गंदा है)।
  4. उपयोगकर्ता को ग्रिड में मान अपडेट करने और सत्यापन मानकों को सही करने की अनुमति दें।
  5. जब सभी डेटा कोशेर होता है और उपयोगकर्ता इसके साथ खुश होता है तो लेनदेन में एक बड़ा डालने का प्रदर्शन होता है।
  6. यदि कुछ भी "बुरा" रोलबैक होता है और कुछ उपयोगकर्ता प्रतिक्रिया प्रस्तुत करता है।
संबंधित मुद्दे