Импорт Excel в SQL - сбой преобразования даты и времени - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь импортировать Excel в свою базу данных SQL, но получаю эту ошибку:

Сообщения Ошибка 0xc0202009: Поток данных Задача 1: Код ошибки SSIS DTS_E_OLEDBERROR.Произошла ошибка OLE DB.Код ошибки: 0x80004005.Доступна запись OLE DB.Источник: «Поставщик Microsoft OLE DB для SQL Server». Результат: 0x80004005 Описание: «Ошибка преобразования при преобразовании даты и / или времени из символьной строки».(Мастер импорта и экспорта SQL Server)

База данных ожидает эти данные:

    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    public DateTime hechosf_periodo { get; set; }

Пример хранения этих данных:

enter image description here

И вот как данные вводятся в Excel:

enter image description here

SQL определяет столбец Excelкак datetime и попытается преобразовать его в datetime2.

Что я могу сделать, чтобы передать эту ошибку?

enter image description here

Обновление:

После просмотра отчета после выполнения

enter image description here

Я видел, что пытается прочитатьбольше строк, которые являются пустыми .Я пытаюсь удалить содержимое каждой ячейки на листе, но это все еще сохраняется.

1 Ответ

0 голосов
/ 27 ноября 2018

Вам следует использовать Преобразование производного столбца между элементами Source и Destination в вашем потоке, которое описано здесь .

Вы видите @ [System:: StartTime] переменная?Вы должны добавить свой столбец (из левой панели) вместо этой переменной и выбрать соответствующий тип в функции приведения из папки Type Casts (см. Панель справа).См. Сопоставление между службами SSIS и типами SQL на этой странице .Это будет DT_DBTIMESTAMP из DT_DBTIMESTAMP2 , а выражение будет выглядеть как [DT_DBTIMESTAMP]old_column_nameПроизводный столбец вам нужно оставить опцию «добавить новый ...», затем вам нужно назвать этот новый столбец и использовать этот новый в элементе Destination вместо excel «время»колонка.enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...