繁体   English   中英

如何通过 c# 从 1400 万个表中删除 100,000 个特定行?

[英]How can I delete 100,000 specific rows from a table of 14 million via c#?

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

每天大约有 100,000 个字符串被添加,100,000 个字符串被删除。

我目前使用 System.Data.SqlClient.SqlBulkCopy 添加新行。 这会在大约 1 秒内添加 100,000 个新行。

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

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

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

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

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

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

您可以部分执行 SQL 示例。

--Example 读取第一个 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 上提供 BATCH 删除:

删除 SQL 服务器中的 100 万行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM