2012-10-25 173 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