#tsql #bulkinsert
#tsql #bulkinsert
Вопрос:
У меня есть файл bcp.fmt для массовой вставки в T-SQL (более переносимый и удобный для пользователя, чем SSIS), но я не знаю эквивалента SQLCHAR для столбца DATETIME в моей целевой таблице (как ни странно, я даже не могу получить ответ от Google). Как следствие, я получаю эту ошибку:
Сообщение 4864, уровень 16, состояние 1, строка 1 Ошибка преобразования данных при массовой загрузке (несоответствие типа или недопустимый символ для указанной кодовой страницы) для строки 1, столбца 4 (ModifyDate).
Это не необоснованная ошибка msg — мне просто нужно найти эквивалентную ссылку на целевой тип данных, верно?
Извлечение из файла FMT ниже:
4 SQLCHAR 0 8 «;» 4 Модифицируйте SQL_Latin1_General_CP1_CI_AS
Комментарии:
1. Вероятно, это проблема с форматом даты и времени в файле dd / mm / yyyy, в то время как sql server может ожидать формат mm / dd / yyyy.
2. Откуда берутся ваши исходные данные?
3. Это был всего лишь CSV-файл. В конце концов я отказался от файла формата: МАССОВАЯ ВСТАВКА dbo. StockLevelTMP ОТ ‘c:DataFile.csv ‘ С ПОМОЩЬЮ (FIELDTERMINATOR = ‘;’, ROWTERMINATOR = ‘n’, FIRSTROW = 2)
Ответ №1:
Используйте SQLCHAR, но установите правильный dateformat для ввода. например SET DATEFORMAT dmy;
УСТАНОВИТЕ DATEFORMAT (Transact-SQL)
Или, если вы управляете входным файлом, используйте формат ISO 8601 для однозначного ввода.