我在SQL Server 2005中创建了一个表,其中包含以下列:
Fname (char (50)),
MailFrom (char (50)),
MailTo (char (50)),
Subject (char (50)),
MBody (char (100)),
MailID (int)
在表格中输入行后,我想将它们提取并存储在文本文件/文档文件/窗口中,每个列都有文本字段。
任何建议,以获得从数据库中提取数据并将其保存在文件中的最佳方法。
答案 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的一些事实:
在这里,您可以获得有关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建议使用编程语言的第三种解决方案。