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