我有两个文本文件,每行都包含字符串。我比较这些文本文件,找出哪些字符串已添加,哪些已删除。
每天大约添加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万行