簡體   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