2016-12-19 3 views
1

Я получаю много файлов .csv, которые мне нужно для массового вставки в таблицу SQL.Ошибка массовой вставки при загрузке формата даты

В файле csv формат даты находится в ГГГГ-ММ-ДД и отдельный столбец для времени, который находится в формате ЧЧ: ММ: СС.

"2016-11-24";"01:00:16" 

В моей таблице я создал два столбца в качестве даты типа данных и времени типа данных и используя этот кусок кода для вставки:

BULK 
INSERT [dbo].[table_name] 
FROM 'filepath' 
WITH 
(
FIRSTROW = 2, 
FIELDTERMINATOR = ';', 
ROWTERMINATOR = '\n' 
) 

Но я получаю эту ошибку:

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

Если я использую нормальную вставку в инструкцию, она работает ...

+0

Вы уверены, что дата указана как yyyy-mm-dd, а не как yyyy/mm/dd –

+0

Да, это так. 2016-12-19 – mgr33n

+0

и кодовая страница в порядке, тоже? Казалось бы, у вас есть несоответствие отображения символов, которое не соответствует выбранному CP. Возможно, ваш csv использует различную кодировку? –

ответ

0

Сначала проверьте данные о столбцах даты и времени физической таблицы тип. Он имеет формат даты и времени, что означает, что сначала вы перемещаете все данные CSV-файла во временную таблицу с типом данных varchar. После вставки во временную таблицу перейдите к физической таблице с использованием преобразования даты и времени.

+0

Могу ли я сделать это за один шаг, потому что я получаю новые данные каждые 10 минут, которые мне нужно вставить. – mgr33n

+0

Да возможно, записать процедуру хранения. Первая вставка в временную таблицу в следующей строке переместится на физическую таблицу – Mansoor