从数据库中读取数据并将其显示在txt文件中

时间:2012-10-25 16:11:52

标签: c# asp.net sql-server-2005

我在SQL Server 2005中创建了一个表,其中包含以下列:

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

在表格中输入行后,我想将它们提取并存储在文本文件/文档文件/窗口中,每个列都有文本字段。

任何建议,以获得从数据库中提取数据并将其保存在文件中的最佳方法。

2 个答案:

答案 0 :(得分: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());
        }
    }
}

答案 1 :(得分:0)

第一个解决方案: 如果您只想使用sql sever,则需要使用bcp命令。

您需要了解bcp的一些事实:

  1. 默认情况下,它连接到默认的sql实例,因此如果框中有多个sql server实例,并且您希望从其他实例获取数据,则需要指定服务器。
  2. 如果使用存储过程来检索数据,则不能在其中使用临时表,只能使用变量表。
  3. 输出将为UTF 16,不幸的是不能以UTF 8输出。
  4. 在这里,您可以获得有关bcp的更多信息:http://msdn.microsoft.com/en-us/library/ms162802(v=sql.90).aspx

        ....
    
        SET @SQLQuery='bcp "EXEC storedprocedure  " queryout C:\SomeFolder\'+@FileName+ ' -w -r " " -t -T -C1252 -S '+@ServerName
        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

    Haedrian建议使用编程语言的第三种解决方案。