2012-05-31 167 views
0

從SQL Server導入/導出數據有沒有一種方法來以編程方式調用SQL Server的導入/導出實用程序。 在我的網絡應用程序中,我想從某些數據庫表導入/導出數據爲CSV,反之亦然,只需使用SQL Server工具即可。 這可能嗎?通過代碼

回答

0

您可以從可用於從SQL Server表中的數據導入到你的web應用程序BCP命令一個csv文件,然後將數據從csv導出到表中。

從SQL表中的數據導出到文本文件

BCP Database.TableName out "Location of the text file " -c -S ServerName -T 

從平面文件將數據加載到表

BCP Database.TableName in "Location of the text file " -c -S ServerName -T 
+0

我該如何運行這些命令?像任何其他**「SELECT」**或**「UPDATE」**語句?注意我正在使用Linq to SQL ... – davioooh

+0

我不知道如何使用Linq來完成它,但是你可以執行上面的命令就像運行存儲過程一樣。例如string sql; sql =「BCP語句」執行master..xp_cmdshell sql – praveen

0

既然你已經使用.net,你可以創建一個連接字符串,解析你的csv文件,然後在你的表中插入行,或者使用其他的c#類。如果你真的想調用外部的* .exe使用C#,你可以做到以下幾點:

Process pLight = new Process(); 
      // Redirect the output stream of the child process. 
      pLight.StartInfo.UseShellExecute = false; 
      pLight.StartInfo.CreateNoWindow = false; 
      pLight.StartInfo.RedirectStandardOutput = true; 


      pLight.StartInfo.FileName = "c:\path\to\light.exe"; 

      pLight.StartInfo.Arguments = "-i -d -ext "; 
      pLight.Start(); 
      // Do not wait for the child process to exit before 
      // reading to the end of its redirected stream. 
      // p.WaitForExit(); 
      // Read the output stream first and then wait. 
      string lightoutput = pLight.StandardOutput.ReadToEnd(); 

      pLight.WaitForExit(); 
+0

我使用LINQ到SQL,所以也不是那麼容易將CSV文件中的值導入到對象中...您能否告訴我一些更好的方法? – davioooh

+0

你可能想看看在LinqToSQL中使用文件路徑執行存儲過程到csv文件嗎? http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx –