2010-10-16 5 views
0

Я пытаюсь использовать BULK INSERT в SQL Server 2008 для импорта файла TSV (Tab Separated Value).SQL Server 2008 BULK INSERT DateTime Error

Вот мой сценарий:

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-файл в формат, приемлемый для DATETIME.

Может кто-нибудь, пожалуйста, помогите мне?

+1

Если вы размещаете код, вы действительно должны использовать кнопку Code Format (маленькая кнопка с изображением «101 010») ... это делает ваш вопрос гораздо проще читать. – LittleBobbyTables

+0

Спасибо за порядок. –

ответ

5

Мне интересно, если это связано с этим, ожидая месяцы сначала, а не дни в вашем формате даты 16/10/2010 (т. Е. Он ожидает 10/16/2010). Вы можете попробовать сделать это до BULK INSERT:

SET DATEFORMAT dmy; 
+1

Спасибо, Майкл. Это сработало. –