我正在尝试将包含 100 万行和 45 列的 SQL Server 表导出到一个.csv文件,供用户通过 Web 界面下载,但需要很长时间,最终我不得不手动停止该过程。
我使用 aSqlDataReader并在读者读取时写入文件以避免内存问题。该代码适用于小表(少于 3k 行),但大表继续运行,并且目标文件保持在 0 KB。
using (spContentConn) { using (var sdr = sqlcmd.ExecuteReader())
using (CsvfileWriter)
{
DataTable Tablecolumns = new DataTable();
for (int i = 0; i < sdr.FieldCount; i++)
{
Tablecolumns.Columns.Add(sdr.GetName(i));
}
CsvfileWriter.WriteLine(string.Join("~", Tablecolumns.Columns.Cast<DataColumn>().Select(csvfile => csvfile.ColumnName)));
while (sdr.Read())
for (int j = Tablecolumns.Columns.Count; j > 0; j--)
{
if (j == 1)
CsvfileWriter.WriteLine("");
else
CsvfileWriter.Write(sdr[Tablecolumns.Columns.Count - j].ToString() + "~");
}
}
我使用了该线程中推荐的相同答案,但仍然不起作用。请帮忙。
犯罪嫌疑人X
相关分类