2011-02-16 21 views
3

對於SQL Server 2008 R2,是否可以使用「批量插入」導入帶「MM/DD/YYYY」格式日期的.csv文件?或者是否必須將我的.csv文件更改爲SQL Server 2008 R2預期的格式?錯誤:「對於第2行第1列(日期),批量加載數據轉換錯誤(類型不匹配或指定代碼頁的字符無效)」。

我執行在Microsoft SQL Server以下2008 R2:

BULK 
INSERT dbo.TCsvOptionContracts 
FROM 'C:\x.csv' 
WITH 
(
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n', 
FORMATFILE = 'C:\format.xml', 
FIRSTROW = 2 
) 
GO 

而且我得到這個錯誤:

Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 2, column 1 (Date). 

.csv文件的該列中的日期是形式MM/DD/YYYY,即「02/16/2011」。

p.s.我生成使用下面的命令格式文件,但是,我沒有看到任何選項來指定MM/DD/YYYY日期爲違規列格式:

bcp Engine..TCsvOptionContracts format nul -c -x -f C:\format.xml -t, -T 

回答

2

配置的「日期」一欄爲「 smalldatetime「而不是」datetime「。試過了,一切都進口了100%。

有兩種可能的方法來做到這一點:

  • 方法1:丟棄格式文件,它會在精細讀它沒有它(這絕對作品)。方法2:如果LINQ-to-Entities堅持在此列中生成「datetime」,則更改格式文件以指定「smalldatetime」,以便它正確讀入(沒有嘗試過,但我想它可能會工作)。
+0

更改爲smalldatetime不適用於我。我有用BCP創建的CSV文件。使用SQL Server 2005而不是2008。 – 2011-10-21 20:11:16

-3

從批量加載的'C:\ x.csv' 確保文件與SQL服務器位於同一目錄很重要。 如果SQL服務器位於c:\,那麼文件應該位於C :. 如果SQL服務器在D:\,那麼文件應該在D :. 我發現它可以幫助很多

相關問題