2013-06-27 88 views
2

我想插入.txt文件數據到我的sql-server數據庫中。我在.txt文件中使用和不使用PK變量時都嘗試過,它們都給我一個錯誤。 我的查詢:批量插入帶有或不帶PK的.txt變量

BULK INSERT DB.Schema.Table FROM 'C:\Users\test.txt' WITH
(FIELDTERMINATOR = ';') GO

  1. 沒有PK瓦爾我得到的錯誤:

Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 1 (PK_ID). Msg 4864, Level 16, State 1, Line 1

  1. 隨着PK瓦爾我得到的錯誤:

Msg 4864, Level 16, State 1, Line 1 Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 1 (PK_ID). Msg 2627, Level 14, State 1, Line 1 Violation of PRIMARY KEY constraint 'PK_Table'. Cannot insert duplicate key in object 'dbo.Table'. The duplicate key value is (1). The statement has been terminated.

一個例子.txt文件內容簡介:

PK_ID; VNAME; n名稱;用戶名;性別
1;史密斯; Smither; SM;雄
2;添;蒂莫; TI;雄

AutoIncrem上。

回答

1

我的解決方案:我無法解決上述問題。一些人說,把ID作爲列名放入txt文件中,並保留這些條目(如(,,漢斯,邁爾)),沒有爲我工作。我發現正確的方法是創建一個臨時表。臨時表只是一個普通表,不包含批量插入數據的主鍵。您可以在此處操作數據。之後,將該登臺表中的數據插入到所需的表中。 Insert Data from one table to another給出了一個很好的描述如何做到這一點。好處還在於你可以更新你的表,因爲批量插入只是讓你選擇插入數據而不是更新。

1

看看你的例子.txt。文件內容,我認爲你正在將表頭加載到表格中。嘗試:

BULK INSERT DB.Schema.Table FROM 'C:\Users\test.txt' WITH 
    (FIELDTERMINATOR = ';', 
    FIRSTROW=2) 
GO 
+0

嗨!謝謝你的評論。我試過但在兩種情況下仍然是相同的錯誤(有/無PK) – ruedi