2010-10-16 103 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