我有一个表名称为ACTION_TYPE的字段。它的潜在值是“ADD”,“Change”,“DELETE”和“ - ”。我想要导出ACTION_TYPE值不是“ - ”的行。我成功地以正确的格式将表格行导出到文件,但是标题不能正常工作/正在写入。将字符串写入文件时导出数据库表
基本上我想要的是通过文件中的类型分开条目。在示例中
ADD
00 00 56 55
00 00 59 42
00 00 36 45
CHANGE
00 00 96 25
DELETE
00 00 76 75
00 00 38 95
到目前为止,我一直没有成功地使用ADD。另外,当我确实使用三种类型中的一种时,是否有更好的方法,而不仅仅是为每种类型(ADD,CHANGE,DELETE)克隆进程?
using (StreamWriter writer =
new StreamWriter("C:\\BillingExport\\EXPORTS\\EFTHLDAY.TABLE.TYPE08.TRANSACTIONS.txt"))
{
writer.Write("ADD");
}
string selectCommandText42 = "SELECT * FROM HOLIDAY_DATE_TABLE WHERE ACTION_TYPE = 'ADD '";
using (SqlDataAdapter adapter42 = new SqlDataAdapter(selectCommandText42, connection))
{
using (DataTable table42 = new DataTable("HOLIDAY_DATE_TABLE"))
{
adapter42.Fill(table42);
System.Text.StringBuilder commaDelimitedText = new System.Text.StringBuilder();
//commaDelimitedText.AppendLine("col1,col2,col3"); // optional if you want column names in first row
foreach (DataRow row in table42.Rows)
{
string value = string.Format("{0} {0} {1} {2}", row[1], row[2], row[3]); // how you format is up to you (spaces, tabs, delimiter, etc)
commaDelimitedText.AppendLine(value);
}
System.IO.File.WriteAllText("C:\\BillingExport\\EXPORTS\\EFTHLDAY.TABLE.TYPE08.TRANSACTIONS.txt", commaDelimitedText.ToString());
}
}
更新:实现下面的一些建议,我现在有下面的代码
string selectCommandText42 = "SELECT * FROM HOLIDAY_DATE_TABLE WHERE ACTION_TYPE != '-'";
using (SqlDataAdapter adapter42 = new SqlDataAdapter(selectCommandText42, connection))
{
using (DataTable table42 = new DataTable("HOLIDAY_DATE_TABLE"))
{
adapter42.Fill(table42);
System.Text.StringBuilder commaDelimitedText = new System.Text.StringBuilder();
//commaDelimitedText.AppendLine("col1,col2,col3"); // optional if you want column names in first row
foreach (DataRow row in table42.Rows)
{
string rowtype = row[4].ToString();
using (StreamWriter writer =
new StreamWriter("C:\\BillingExport\\EXPORTS\\EFTHLDAY.TABLE.TYPE08.TRANSACTIONS.txt")){
writer.WriteLine(rowtype);
}
string value = string.Format("{0} {0} {1} {2}", row[1], row[2], row[3]); // how you format is up to you (spaces, tabs, delimiter, etc)
commaDelimitedText.AppendLine(value);
}
System.IO.File.AppendAllText("C:\\BillingExport\\EXPORTS\\EFTHLDAY.TABLE.TYPE08.TRANSACTIONS.txt", commaDelimitedText.ToString());
}
}
这是提供以下输出
ADD
00 00 96 25
00 00 76 75
00 00 38 95
00 00 56 55
00 00 59 42
00 00 36 45
这似乎不适用CHANGE或DELETE标题,并且也不以适当的顺序列出条目(ADD条目现在位于已创建文件的底部)。
更快,更容易的解决方案将使用SSIS并将查询结果导出到CSV文件。这也将避免在写回到磁盘之前加载内存中的所有内容 – 2014-10-31 13:49:48