2015-09-01 4 views
0

Я пытаюсь импортировать пользователей в таблицу с этим запросом SQL:вставить дату насыпью в SQL Server 2008

TRUNCATE TABLE TEST.dbo.SALARIES; 
INSERT INTO TEST.dbo.SALARIES 
    (PSA_SALARIE,PSA_LIBELLE,PSA_PRENOM,PSA_DATESORTIE) 
    SELECT Matricule,Nom,Prenom,Date_sortie 
     FROM OPENROWSET(BULK 'E:\...\infoprofuniq.txt', 
     FORMATFILE='E:\...\infoprof.fmt', 
     FIRSTROW = 1, 
     CODEPAGE = 'ACP' 
) as t1 ; 

Вот файл FMT Я использую:

9.0 
4 
1 SQLCHAR 0 0 ";" 1 Matricule "" 
2 SQLCHAR 0 0 ";" 2 Prenom "" 
3 SQLCHAR 0 0 ";" 3 Nom "" 
4 SQLDATETIME 0 0 "\r\n" 4 Date_sortie "" 

Вот образец DATAS я пытаюсь импортировать:

000001;JOHN;DOE;'2001-01-01 00:00:00.000' 

я получаю ошибку (через Google Translate, так как я использую французскую версию SQL-сервер):

Msg 4864, Level 16, State 1, Line 2 
Error converting the bulk load data (type mismatch or invalid character for the specified codepage) for row 1, column 4 (Date_sortie). 

Я попытался с помощью одинарной кавычки, двойные кавычки, ни один и другой формат даты, но я не могу понять, какой формат ждет SQL Server для.

PSA_DATESORTIE - тип "datetime", допускающий нулевые значения.

Неужели кто-то сталкивался с этой проблемой? Помощь с благодарностью! Marc

ответ

0

Формат данных отличается от вашего языка. Поскольку вы упомянули вы используете французскую версию SQL Server, это означает, что

SELECT CONVERT(DATETIME, '2015-20-11') 

будет прекрасно работать для вас, но

SELECT CONVERT(DATETIME, '2015-11-20') 

возвращает ошибку. Да?

Попробуйте вручную вставить несколько строк из своего набора данных и посмотреть, какой формат работает. Пример строки, которую вы предоставили «2001-01-01 00: 00: 00.000», не помогает, поскольку он не имеет значения, которое будет превышать максимальное значение месяца (12). Найдите несколько строк из вашего набора данных, в котором указаны значения даты, когда день больше 12 (например, пример выше).

Кроме того, убедитесь, что нули в наборе данных действительно не имеют значения вместо строки «null». Наконец, если все проверены, просмотрите возможные специальные/непечатаемые символы, скрытые в наборе данных.

+0

У меня не было возможности проверить его, поскольку я, наконец, смог вставить этот формат «2015-31-12 23: 59: 59.999». Спасибо, хотя для вашего ответа и да, я нашел много специальных/непечатных символов в наборе данных! – marc99

Смежные вопросы