2011-05-10 48 views
0

我需要添加幾百萬個數據記錄到ESE數據庫。在其他值中,每條記錄都有唯一的字符串值。這個值可以被認爲是一個關鍵。如何快速添加許多記錄與一些重複到可擴展存儲引擎

對記錄感興趣的是輸入集中可能有多個相同記錄的相同實例。一旦輸入,我只需要一個記錄與每個唯一的字符串。

我的問題是如何做到這一點 - 我如何快速篩選出重複?

現在,我只是做了重點搜索後添加的每個記錄,如果該條目已存在我跳過它。如果它不在數據庫中,我添加記錄和進度。這裏的大筆費用是在每個條目上進行搜索。

關於使這個非常快的任何想法?無論如何,爲了增加一個重複值會失敗的關鍵值?

回答

1

你可以只通過傳遞JET_bitIndexUnique到JetCreateIndex創建的字符串列的唯一索引:

JetCreateIndex(sesid, tableid, "myindex", JET_bitIndexUnique, "+string_col\0", 13, 100)); 

重複值的與插入使用JET_errKeyDuplicate失敗。

這種方法是最好的,如果你的字符串很短。如果你的字符串很長,你應該使用字符串的散列來測試唯一性。

-2

**

DTS. 
BULK INSERT. 
SSIS. 
Choose as you wish 

**

+0

我不是SQL,我使用ESE - 任何想法呢? – stuck 2011-05-12 04:19:28

+0

我是完全支持SQL在這個堆棧,所以我建議SQL過程 – 2011-05-13 19:37:47

相關問題