我正在编写一个C# Windows Forms应用程序,该应用程序从API下载文件,解压缩这些文件并将它们解析到数据库中。我的问题出现在解析部分。其他关于“应用程序处于断点模式”的线程并没有明确解释为什么会使用.Load()会出现此问题。
我执行一个Openrowset查询来读取数据库中的文件。它可以很好地读取所有信息。然后我使用
CSV文件非常大,有1700万行数据。我试过加载前20万行,使用
第一次迭代:
第二次迭代(注意箭头):
然而,给我的提示消息却无济于事,让我感到非常糟糕,无法查看异常或者调试代码:
希望能得到帮助,非常感谢您的时间。
我执行一个Openrowset查询来读取数据库中的文件。它可以很好地读取所有信息。然后我使用
dataTable.Load()
加载该查询的结果。然而,该库内部抛出了异常,导致应用程序停止运行。我无法获得异常信息。以下是代码的主要部分(因为实际查询太长,所以我使用这个作为示例):private DataTable dataTable;
public void loadDataTable()
{
dataTable = new DataTable();
dataTableConsumo.Load(queryExecutor.ExecuteReader("SELECT * FROM Prices", connection));
}
public SqlDataReader ExecuteReader(String query, SqlConnection connection)
{
SqlCommand comando = new SqlCommand(query, connection);
comando.CommandTimeout = 0;
return comando.ExecuteReader();
}
CSV文件非常大,有1700万行数据。我试过加载前20万行,使用
.Load()
和.WriteToServer
方法(每次迭代时强制进行GC调用,并基于总行数的分区循环创建新的DataTable实例),并且只试了2-3次,这样是可以正常工作的。但在第四次加载时,它就停止了。而且这不是因为内存问题,因为我一直在控制。我尝试了很多方法,但都没什么效果。以下是一些截图:第一次迭代:
![First iteration](https://istack.dev59.com/bMA1H.webp)
![Second iteration (check the arrow)](https://istack.dev59.com/TipPf.webp)
![The message](https://istack.dev59.com/iqAdc.webp)