0
我使用CsvWriter將數據從SQL Server中的表導出,並有兩個問題:CsvWrite不出口小桌子
當表很小,即有幾個行(我測試過1行和5行),CsvWriter不導出任何東西(空文件)
當表有足夠的行觸發導出時,它會截斷行。在我的測試中,導出30行表時得到21行,導出50行表時得到44行(最後一行在兩種情況下都不完整)。
加載測試數據
DECLARE @cnt INT = 0;
DECLARE @rows INT = 1; /* I tested 5, 30 and 50 */
WHILE @cnt < @rows
BEGIN
INSERT INTO csvtest(id, a, b) VALUES(NEWID(), @cnt, 'a very very1 very2 very3 very4 long random string');
SET @cnt = @cnt + 1;
END;
C#代碼SQL Server代碼導出數據(或多或少在https://joshclose.github.io/CsvHelper/代碼的副本)
// open a database connection
SqlConnection con = new SqlConnection(cs);
con.Open();
string sqlstring = "SELECT * FROM csvTest";
SqlCommand cmd = new SqlCommand(sqlstring, con);
SqlDataReader dr = cmd.ExecuteReader();
var csv = new CsvWriter(new StreamWriter("c:\\tmp\\csvtest_1row.csv"));
while (dr.Read())
{
for (var i = 0; i < dr.FieldCount; i++)
{
csv.WriteField(dr[i]);
}
csv.NextRecord();
}
con.Close();
我CsvHelper版本是2.15.0.2。
有兩點需要注意:
我調試一行行的代碼,可以確認上述數據從數據庫中正確讀取。其實,我查看CSV對象,似乎數據在那裏。不知何故,他們沒有正確寫入文件。
我的代碼應該是通用的導出任何表。
誰能告訴我我做錯了什麼?
在此先感謝您的幫助。
謝謝。這解決了我的問題。 – james800