gpt4 book ai didi

c# - "Thread was being aborted"0n 大数据集

转载 作者:搜寻专家 更新时间:2023-10-30 21:37:36 25 4
gpt4 key购买 nike

我正在尝试处理数据集中的 114,000 行(从 Oracle 数据库填充)。我在 600 标记附近遇到错误 - “线程被中止”。
我所做的只是阅读数据集,但我仍然遇到了问题。这对于数据集来说是不是太多了?不过,它似乎可以正常加载到数据集中。我欢迎任何更好的方法来处理这些数据。

rootTermsTable = entKw.GetRootKeywordsByCategory(catID);
for (int k = 0; k < rootTermsTable.Rows.Count; k++)
{
string keywordID = rootTermsTable.Rows[k]["IK_DBKEY"].ToString();
...
}


public DataTable GetKeywordsByCategory(string categoryID)
{
DbProviderFactory provider = DbProviderFactories.GetFactory(connectionProvider);
DbConnection con = provider.CreateConnection();
con.ConnectionString = connectionString;

DbCommand com = provider.CreateCommand();
com.Connection = con;
com.CommandText = string.Format("Select * From icm_keyword WHERE (IK_IC_DBKEY = {0})",categoryID);
com.CommandType = CommandType.Text;

DataSet ds = new DataSet();
DbDataAdapter ad = provider.CreateDataAdapter();
ad.SelectCommand = com;

con.Open();
ad.Fill(ds);
con.Close();

DataTable dt = new DataTable();
dt = ds.Tables[0];

return dt;

//return ds.Tables[0].DefaultView;

}

最佳答案

一些想法:

  1. 根据您的操作,DataReader 可能比 DataTable 更快。 DataReader 允许您在从数据库读取数据时一次处理一行。如果您对每一行都进行了相当多的处理,那么您当前的方法(DataTable)可能是更好的方法,因为它允许您将所有行拉入内存并在不保持连接打开的情况下处理它们。
  2. 考虑使用“SELECT IK_DBKEY”而不是“SELECT *”,因为您将通过网络将更少的数据拉回到内存中。
  3. 最后,您可以在代码周围放置一个 try/catch,以确保它是错误消息的实际来源。如果您使用的是 ASP.Net ,“线程被中止”是一个非常常见的错误,这通常表示处理请求被中断(例如,有人离开了长时间运行的请求)。

关于c# - "Thread was being aborted"0n 大数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2436187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com