我用bulk insert
語法到日常的文件上傳到SQL
,目前尋找途徑,以避免排duplicates
auto-incrementing
後ID
柱,並將其設置爲primary key
。由於使用的表的說明:如何避免重複行的SQL後自動增量列
CREATE TABLE dupli
(
ID int IDENTITY(1000,1) NOT NULL PRIMARY KEY,
period date NOT NULL,
fruits varchar(MAX) NOT NULL,
num int NOT NULL,
)
假設dupli.csv
包含:
4/20/2011, apple, 5
SQL
自然檢索後的文件上傳:
1000¦2011-04-20¦apple¦5¦
的漏洞:如果有人,錯誤地上傳相同的文件牛逼檢查一些數據存在爲2011-04-20
然後重複行創建爲
1001¦2011-04-20¦apple¦5¦
等ex-ante
...
這看起來正常的ID
一直auto-incremented
。不過,我不知道是否有辦法,保持ID
自動遞增,同時避免重複行?這意味着我可以得到:
1000¦2011-04-20¦apple¦5¦
1001¦2011-04-21¦apple¦5¦
...
,但從來沒有
1000¦2011-04-20¦apple¦5¦
1001¦2011-04-20¦apple¦5¦
否則bulk insert
不執行。
目的是避免創建function
如果執行bulk insert
(僅一次)之前每天的基礎上存在預先存在的數據來檢查。到目前爲止,這是唯一可以考慮保留上表結構並避免重複的方法。
在此先感謝
您是否必須直接插入生產表?爲什麼不先插入到保存表中,檢查重複項,然後插入。在每次插入之後,可以將保持臺截斷。但是仍然可以有優化檢查所需的索引。 – BeaglesEnd
直接插入對我來說聽起來是最簡單的實現,意識到「最簡單」方法並不總是最好的方法,因爲我一直堅持使用「重複」方法。 –
你是如何啓動'bulk insert'的?從作業調用的存儲過程,另一個進程/應用程序,還是隻是執行腳本?您可以在程序中使用臨時表或表變量。使用臨時表,您仍然可以根據需要應用索引,但是對錶變量這樣做是有限的。 – BeaglesEnd