2013-07-25 101 views
0

我想批量插入到具有標識列的表中。但是我的主機文件包含標識列的空值。當我發出'bcp'命令時,出現錯誤 -SQL服務器批量插入標識列

開始複製...

SQLSTATE = S1000,NativeError = 0

錯誤= [微軟] [SQL Server的本機客戶端10.0]在BCP數據文件中遇到意外EOF

SQLState = 23000,NativeError = 515

錯誤= [Microsoft] [SQL Server Native Client 10.0] [SQL Server]不能 將值NULL插入'UNIQUE_ID'列表'xx.dbo.yyy'; 列不允許有空值。 INSERT失敗。

SQLSTATE = 01000,NativeError = 3621

警告= [微軟] [SQL Server本機客戶端10.0] [SQL Server]將 聲明公頃š被終止。失敗

如果我不給標識列空值

BCP複製,然後我得到一個錯誤 - 意外的EOF BCP數據文件中遇到。

請在得到BCP工作散裝幫助插入表..

+0

你能發表你的陳述嗎?你有格式文件嗎? –

+1

我想將上述內容添加到您的問題中,可以顯示示例數據嗎?在你的'.txt'中有一個空的id字段而不使用'KEEPIDENTITY'應該可以工作。 –

+0

是的。我的壞..我在不知不覺中使用了KEEP IDENTITY ..刪除後,它工作。沒有指定數據文件中的空ID域,有沒有任何選項,以便我可以刪除數據文件中的ID域? – Ravee

回答

1

雖然我建議你先批量插入數據到一些臨時表中,然後將數據從臨時表主表。這樣你可以保留標識列。 接下來的方法是在您的主機文件中添加一個額外的ID列,並將該列留空,然後執行批量插入操作。另請確認您是否在批量插入查詢中使用KEEPIDENTITY關鍵字。

+0

我不發出命令 - KEEPIDENTIY..And在我的主機文件中,我給id列的空值。如果我不給空值,那麼它會拋出錯誤 - 意外的EOF文件 – Ravee