Импорт строки даты в производный столбец - PullRequest
2 голосов
/ 18 ноября 2011

У меня есть строковая дата, считываемая из файла в следующем формате и выдающая мне ошибку приведения.

Oct 25 2011 10:18:10:756PM

Я использую производный столбец для приведения строки к дате.

Я попробовал следующее в выражении безуспешно

(DT_DBTIMESTAMP)myDate
CAST(myDate as datetime)
CONVERT(datetime, myDate)  //I get parse error on this.

должен быть простой способ разыграть это.Заранее спасибо.

1 Ответ

3 голосов
/ 20 ноября 2011

Подробный ответ, но я позволю себе не согласиться с тем, «SSIS не может распознать формат даты, указанный в вопросе».

Возможно, если оно было переформулировано как «SSIS не может распознать предоставленный формат даты без посторонней помощи». Основная проблема в этом случае заключается в том, что по умолчанию подпрограммы синтаксического анализа даты и номера поддерживают язык . В общем, это хорошо, кроме случаев, когда это не так. Я впервые наткнулся на это, когда имел дело с датами в формате ccyymmdd, выходящими из мэйнфрейма. Как указали другие, в tsql он будет разбираться, почему не SSIS? Существует множество статей, в которых предлагается разделять и нарезать кубики на строковые данные, чтобы сделать их действительными датами, но зачем проходить через все эти трудности?

Учитывая это как пример входных данных (с разделителями табуляции).

LongDateDesiresFastParse    Gibberish
Oct 25 2011 10:18:10:756PM  Hello world
Oct 24 2010 10:18:10:756PM  Hello 2010 world
Oct 23 2009 10:18:10:756PM  Hello 2009 world
Oct 22 2008 10:18:10:756PM  Hello 2008 world

И посылка, которая выглядит следующим образом,

Control flow

Изменяя один параметр в Источник плоских файлов , я могу заставить пакет не работать или нет.

Generic data flow

Щелкните правой кнопкой мыши на источнике плоских файлов и выберите «Показать расширенный редактор». На вкладке «Свойства ввода и вывода» разверните столбцы вывода и найдите столбец с датой. Измените настройку FastParse с False на True .

Setting fast parse in a flat file source

Когда я запустил его, пакет изначально потерпел неудачу, поскольку терял точность, сохраняя это значение в DB_TIMESTAMP. Я был успешным, когда я установил столбец для типа DB_TIMESTAMP2

Connection Manager, advanced tab

Демо-пакет доступен на https://sites.google.com/site/billfellows/home/files/FastParse.dtsx?attredirects=0&d=1

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