SQL Server 2008 BULK INSERT DateTime Ошибка - PullRequest
0 голосов
/ 16 октября 2010

Я пытаюсь использовать BULK INSERT в SQL Server 2008 для импорта файла TSV (значение с разделением табуляцией).

Вот мой скрипт:

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

К сожалению, я получаю следующую ошибку:

Сообщение 4864, уровень 16, состояние 1, строка 2 Ошибка преобразования данных массовой загрузки (типнесовпадение или недопустимый символ для указанной кодовой страницы) для строки 1, столбца 4 (TodaysDate).

Очевидно, мне нужно преобразовать формат даты в моем файле TSV в формат, приемлемый для DATETIME.

Может кто-нибудь помочь мне?

1 Ответ

5 голосов
/ 16 октября 2010

Мне интересно, связано ли это с ожиданием первых месяцев, а не дней в формате даты 16/10/2010 (то есть ожидается 16.10.2010). Вы можете попробовать сделать это до ОБЪЕМНОЙ ВСТАВКИ:

SET DATEFORMAT dmy;
...