2010-07-05 36 views
7

我正試圖使用​​BCP將數據插入表中。該表具有標識列。我正在接受來自文本文件的輸入。請讓我知道是否有任何好的解決方案。插入標識列的BCP格式是什麼

問候, 茶煙

回答

7

你有兩個選擇,真正做到:

  • 插入IDENTITY列的值,並讓SQL Server的處理,對你

  • 如果您不能或不想這樣做,則需要在該表上打開IDENTITY_INSERT,然後插入該值,然後再次將其關閉:

    SET IDENTITY_INSERT (table name) ON 
    -- do your bcp import here 
    SET IDENTITY_INSERT (table name) OFF 
    

    使用此設置,您可以將自己的值插入到IDENTITY列中。

    如果你這樣做,你可能還需要在插入後補種標識列,以避免您的身份發現潛在的重複:

    DBCC CHECKIDENT('table name', RESEED) 
    
6

我需要做同樣的事情,我的同事指出您可以使用BCP上的-E開關來執行此操作。

從文檔...

「-E指定導入數據文件中的標識值或值將被用於標識列。如果沒有給出-E,標識值此列在被導入的數據文件中被忽略。「

作品一種享受,感謝一月!

2

創建一個視圖不包括標識列也是有用的,無需任何格式的文件:

bcp mydb.dbo.myview in file.txt -S(local) -T -e err.log -c 
+0

狡猾!這也適用於'freebcp'。 – 2017-11-01 08:49:09