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