Изменение формата файла CSV - PullRequest
0 голосов
/ 22 февраля 2019

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

Первые два столбца CSV - этодаты.На части пути файла формат даты был изменен с даты на цифру следующим образом:

Service_Date, Event_Datetime
2018-04-30,2018-04-30 21:18
43220,43220.92412

Как видите, формат изменился с даты на цифру.Другие столбцы даты, не показанные здесь, также изменились.

Очевидно, что это нарушает задачу потока данных.

Помимо перехода в Excel и сохранения CSV с правильным форматом столбца, есть лиКстати в SSIS можно конвертировать на лету, чтобы работа не провалилась и требовала ручного вмешательства?

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

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

FINDSTRING(Date_Service,"-",1) != 0 ? (DT_DATE)Date_Service : (DT_DATE)(DT_R8)Date_Service
0 голосов
/ 22 февраля 2019

Эти значения данных 43220,43220.92412 называются сериалами даты, значение даты можно получить разными способами:

(1) Используя производный столбец

Этот столбец можно преобразовать в плавающеезатем к дате и времени, используя производный столбец:

(DT_DATE)(DT_R8)[dateColumn]

Ссылки

(2) Использование компонента сценария

Вы можете использовать функцию DateTime.FromOADAte(), например: (код в VB.NET)

If Row.ServiceDate_IsNull = False AndAlso String.IsnullOrEmpty(Row.ServiceDate) Then 

   Dim dblTemp as Double

   If Double.TryParse(Row.ServiceDatemdblTemp) Then

        Row.OutputDate = DateTime.FromOADate(dblTemp)

   Else

       Row.OutputDate = Date.Parse(Row.ServiceDatemdblTemp)

   End


End If

Ссылка

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