如何通过c#从1400万个表中删除100000个特定行



我有两个文本文件,每行都包含字符串。我比较这些文本文件,找出哪些字符串已添加,哪些已删除。

每天大约添加100000个字符串,删除100000个字符串。

我当前使用System.Data.SqlClient.SqlBulkCopy来添加新行。这将在大约1秒内添加100000个新行。

但是,我看不到类似的删除行的方法。我有100000个字符串要从1400万行的表中删除。即使尝试使用in(x,x,x(一次性删除5000,也会导致一分钟后超时。

c#中是否有一种有效的方法来删除这些字符串?

您可以在另一个表中插入要删除的字符串。

然后使用一个连接到该表的delete查询,一次将它们全部删除。

delete t
from your_table t
join helper_table h on t.name = h.name

是的,我过去也有同样的经历。我提出部分删除,否则你每次都会有很大的糟糕。

您可以执行部分SQL示例。

--示例读取第一条2.000(您选择(记录并执行删除

using (StreamReader sr = File.OpenText(filepath))
{
List<string>lines;
while ((string line = sr.ReadLine()) != null)
{    
lines.Add(line);      
lineCount++;
if(lineCount%2000==0)
{ 
Execute Delete Here
lines.Clear(); //dont forget.
}
}
Execute rest of lines delete//
}

对于第二个选项,我可以在SQL上提供批量删除:

删除SQL Server 中的100万行

最新更新