我有一個表名稱爲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