2010-10-16 102 views
0

我想在SQL Server 2008中使用BULK INSERT導入TSV(製表符分隔值)文件。SQL Server 2008 BULK INSERT日期時間錯誤

這裏是我的腳本:

USE ABC 
GO 

CREATE TABLE CSVTest 
(ID INT, 
FirstName VARCHAR(40), 
LastName VARCHAR(40), 
TodaysDate DATETIME) 
GO 

BULK 
INSERT CSVTest 
FROM 'd:\csvtest.txt' 
WITH 
(
FIELDTERMINATOR = '\t', 
ROWTERMINATOR = '\n' 
) 
GO 

--Check the content of the table. 
SELECT * 
FROM CSVTest 
GO 

--Drop the table to clean up database. 
SELECT * 
FROM CSVTest 
GO 

DROP TABLE CSVTest 
GO 

這裏是文件d:\csvtest.txt的內容:

 
1 James Smith 16/10/2010 04:45:35 
2 Meggie Smith 16/10/2010 04:45:35 
3 Robert Smith 16/10/2010 04:45:35 
4 Alex Smith 16/10/2010 04:45:35 

不幸的是,我得到以下錯誤:

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

很顯然,我需要將我的TSV文件中的日期格式轉換爲可接受的格式。

有人可以幫我嗎?

+1

如果您發佈的代碼,你應該使用的代碼格式按鈕(小按鈕與「101 010」圖片)...它使你的問題更容易讀書。 – LittleBobbyTables 2010-10-16 15:17:32

+0

感謝您的整理。 – 2010-10-16 15:26:07

回答

5

我想知道這是否與它期待的第一個月,而不是日期格式爲16/10/2010的日期(即它預計10/16/2010)。您可以在BULK INSERT前嘗試這樣做:

SET DATEFORMAT dmy; 
+1

謝謝邁克爾。這工作。 – 2010-10-16 15:31:46