【发布时间】:2022-01-12 11:52:22
【问题描述】:
我有一个包含 300 万行的文档,我必须对其进行处理,然后将其插入数据库的表中。数据库连接器类具有接收数据然后进行操作的插入和更新。插入和更新工作完美。
问题是我想将此修改拆分到数据库以避免数据库过载。理想情况下,我希望自动拆分 arrFinal 的 n 行,然后分别管理每个部分。但我不知道该怎么做。
这是我现在拥有的 foreach:
ConnectDB cdb = new ConnectDB();
foreach (string s in arrFinal)
{
if (s.Split(';')[1] == "REQUEST")
{
cdb.Insert(s.Split(';')[0], s.Split(';')[2], s.Split(';')[3], s.Split(';')[4], s.Split(';')[5], dateLog);
}
else if (s.Split(';')[1] == "RESPONSE")
{
cdb.Update(s.Split(';')[0], s.Split(';')[5]);
}
}
如果您想知道数据是如何来的:
00:00:00.7443;REQUEST;POST;https://ulrName/Prices/;/1_0/962;https://ulrName/Prices/1_0/962
00:00:00.7793;RESPONSE;POST;https://ulrName/Prices/;/1_0/962;https://ulrName/Prices/1_0/962
提前感谢您的帮助。我愿意尝试任何方法来解决这个问题。
【问题讨论】:
-
你好。假设 arrFinal 是您的最终数组,包含 300 万行。如果可能的话,也许最好不要在 RAM 中收集那么多记录/行。相反,也许您可以将“从文档中读取”划分为具有诸如startingLineIndex和LineCountLimit等参数的较小作业。然后创建函数来读取预定的行数,然后应用插入/更新行,然后再次读取该行数然后插入/update 等。这可能是更好的做法,然后阅读所有行然后尝试处理它们。