2012-10-25 172 views
0

我有一個表在SQL Server 2005中它具有以下列所做的顯示出來:從數據庫中讀取數據,並在一個txt文件

Fname (char (50)), 
MailFrom (char (50)), 
MailTo (char (50)), 
Subject (char (50)), 
MBody (char (100)), 
MailID (int) 

進入行插入到表後,我想提取,並將其儲存在文本文件/文檔文件/窗口窗體中,每個列都有文本字段。

任何建議,以獲得從數據庫中提取數據並將其保存在文件上的最佳方式。

回答

5
using (SqlConnection conn = new SqlConnection(connectionString)) 
{ 
    SqlCommand com = new SqlCommand("Select * from mytable", conn); 
    DataReader reader = com.ExecuteReader(); 

    using (TextWriter writer = new TextWriter("myFile.txt")) 
    { 
     while (reader.Read()) 
     { 
      StringBuilder myData = new StringBuilder(); 
      myData.Append(reader["Fname"].ToString(); 
      //etc - see how you want to format it 

      writer.WriteLine(myData.ToString()); 
     } 
    } 
} 
0

解決方案一: 如果你想只使用SQL斷絕你將需要使用BCP命令。

,你需要知道BCP的一些事實:

  1. 默認情況下它連接到默認的SQL實例,因此你需要指定服務器是否有此複選框,然後在多臺SQL Server實例期望從其他人獲取數據。
  2. 如果使用存儲過程檢索數據,則不能使用臨時表,只有變量表。
  3. 輸出將在UTF 16,沒辦法不幸輸出中UTF 8

在這裏你可以得到有關BCP的詳細信息:http://msdn.microsoft.com/en-us/library/ms162802(v=sql.90).aspx

.... 

    SET @SQLQuery='bcp "EXEC storedprocedure " queryout C:\SomeFolder\'[email protected]+ ' -w -r " " -t -T -C1252 -S '[email protected] 
    PRINT @SQLQuery 

    EXEC @RC = master..xp_cmdShell @SQLQuery 

    .... 

第二種解決方案是使用SSIS包將其導出到文件。

您將需要使用DataFlowTask並使用數據庫源和平面文件目標。

例子是在這裏SQL 2008 R2,但我相信它應該不會對2005年很大的不同:

http://www.kodyaz.com/ssis/export-to-text-file-using-ssis-package.aspx

三Solutution使用編程語言Haedrian建議。

+0

我想要一些初學者的腳。說實話,我會公開接受,這段代碼對我來說都是希臘人! :P沒有進攻,但我不像你一樣親! :)歡呼你的知識。 – Esha