我正在嘗試SQL Server 2008 Express上的BCP實用程序。我不認爲我想要做的事情可能更加微不足道,但是當我試圖向空表中插入兩行時,仍然遇到主鍵衝突。瑣碎BCP插入的主鍵違規
下面是表DDL:
CREATE TABLE [dbo].[BOOKS](
[BOOK_ID] [numeric](18, 0) NOT NULL,
[BOOK_DESCRIPTION] [varchar](200) NULL,
CONSTRAINT [BOOKS PK] PRIMARY KEY CLUSTERED
(
[BOOK_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
這裏是BCP格式文件:
10.0
2
1 SQLNUMERIC 0 3 "\t" 1 BOOK_ID ""
2 SQLCHAR 0 0 "\r\n" 2 BOOK_DESCRIPTION Modern_Spanish_CI_AS
,這裏是我的輸入文件:
101 BOOK_ABC_001<CR><LF>
102 BOOK_ABC_002<CR><LF>
終於在這裏就是命令我運行:
bcp Database.dbo.BOOKS in books.txt -T -f BOOKS-format.fmt
,這裏是我的錯誤:如果我使用的輸入文件與單行
Starting copy...
SQLState = 23000, NativeError = 2627
Error = [Microsoft][SQL Server Native Client 10.0][SQL Server]Violation of PRIMARY KEY constraint 'BOOKS PK'. Cannot insert duplicate key in object 'dbo.BOOKS'.
SQLState = 01000, NativeError = 3621
Warning = [Microsoft][SQL Server Native Client 10.0][SQL Server]The statement has been terminated.
BCP copy in failed
現在,BCP成功。在這種情況下,BOOK_ID列被賦值爲0.因此,似乎我的輸入文件中的第一個字段被忽略,並且0被用作所有行的BOOK_ID的值,這將解釋PK違反錯誤。
所以問題是,我的格式或輸入文件中導致第一列被忽略的問題是什麼?
謝謝。
那麼,我通過使用格式描述符的XML版本來解決這個問題,就像這樣:'<?xml version =「1.0」?>
' –
ioss
無論如何,如果任何人具有用於與非XML格式的問題的答案文件,我會很感激...謝謝。 – ioss