Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एक्सेल शीट अपलोड करना और डेटा को SQL सर्वर डेटाबेस में आयात करना

आप एक HttpPostedFile के साथ काम कर रहे हैं; यह वह फ़ाइल है जो वेब सर्वर पर "अपलोड" की जाती है। आपको वास्तव में उस फ़ाइल को कहीं सहेजना होगा और फिर उसका उपयोग करना होगा, क्योंकि...

...आपके उदाहरण में, ऐसा होता है कि आप अपनी वेबसाइट को उसी मशीन पर होस्ट कर रहे हैं जिस पर फ़ाइल रहती है, इसलिए पथ पहुंच योग्य है। जैसे ही आप अपनी साइट को किसी अन्य मशीन पर परिनियोजित करते हैं, आपका कोड काम नहीं करेगा।

इसे दो चरणों में विभाजित करें:

1) फ़ाइल को कहीं सेव करें - इसे देखना बहुत आम है:

string saveFolder = @"C:\temp\uploads"; //Pick a folder on your machine to store the uploaded files

string filePath = Path.Combine(saveFolder, FileUpload1.FileName); 

FileUpload1.SaveAs(filePath);

अब आपके पास आपकी फ़ाइल स्थानीय रूप से है और असली काम किया जा सकता है।

2) फ़ाइल से डेटा प्राप्त करें। आपका कोड वैसे ही काम करना चाहिए, लेकिन आप अपनी कनेक्शन स्ट्रिंग को इस तरह से लिख सकते हैं:

string excelConnString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties="Excel 12.0";", filePath);

फिर आप उस फ़ाइल को हटाने के बारे में सोच सकते हैं जिसे आपने अभी-अभी अपलोड और आयात किया है।

अधिक ठोस उदाहरण प्रदान करने के लिए, हम आपके कोड को दो तरीकों से पुन:सक्रिय कर सकते हैं:

    private void SaveFileToDatabase(string filePath)
    {
        String strConnection = "Data Source=.\\SQLEXPRESS;AttachDbFilename='C:\\Users\\Hemant\\documents\\visual studio 2010\\Projects\\CRMdata\\CRMdata\\App_Data\\Database1.mdf';Integrated Security=True;User Instance=True";

        String excelConnString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0\"", filePath);
        //Create Connection to Excel work book 
        using (OleDbConnection excelConnection = new OleDbConnection(excelConnString))
        {
            //Create OleDbCommand to fetch data from Excel 
            using (OleDbCommand cmd = new OleDbCommand("Select [ID],[Name],[Designation] from [Sheet1$]", excelConnection))
            {
                excelConnection.Open();
                using (OleDbDataReader dReader = cmd.ExecuteReader())
                {
                    using(SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection))
                    {
                        //Give your Destination table name 
                        sqlBulk.DestinationTableName = "Excel_table";
                        sqlBulk.WriteToServer(dReader);
                    }
                }
            }
        } 
    }


    private string GetLocalFilePath(string saveDirectory, FileUpload fileUploadControl)
    {


        string filePath = Path.Combine(saveDirectory, fileUploadControl.FileName);

        fileUploadControl.SaveAs(filePath);

        return filePath;

    }

इसके बाद आप बस SaveFileToDatabase(GetLocalFilePath(@"C:\temp\uploads", FileUpload1)); पर कॉल कर सकते हैं।

अन्य विस्तारित गुण की समीक्षा करने पर विचार करें आपके एक्सेल कनेक्शन स्ट्रिंग के लिए। वे उपयोगी आते हैं!

अन्य सुधार जो आप करना चाहते हैं, उनमें आपके एसक्यूएल डेटाबेस कनेक्शन स्ट्रिंग को कॉन्फ़िगरेशन में डालना और उचित अपवाद हैंडलिंग जोड़ना शामिल है। कृपया इस उदाहरण पर केवल प्रदर्शन के लिए विचार करें!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. बाधा का नाम जाने बिना विदेशी कुंजी छोड़ें?

  2. मैं SQL Server 2008 का उपयोग करके किसी विशिष्ट दिनांक सीमा और दिनांक समय के लिए SQL क्वेरी कैसे लिखूँ?

  3. संबंधपरक डेटाबेस में उपवर्ग की अखंडता बनाए रखना

  4. एक्सेस में SQL सर्वर संग्रहीत कार्यविधि से आउटपुट पैरामीटर का उपयोग करना

  5. SQL सर्वर में दशमलव स्थानों को छोटा करें (गोल नहीं)