Чтение дат из файла Excel в SSIS. SSIS считывает даты в другом формате - PullRequest
0 голосов
/ 18 октября 2019

В файле excel все даты отформатированы как MM / dd / yy, я читаю их в SSIS через скрипт c #, но, просматривая записи, замечаю, что некоторые даты читаются как dd / MM / yy. Каким-то образом Excel или SSIS портят формат даты. Так как некоторые даты правильно отформатированы как MM / dd / yy, я не могу определить, какие правильно отформатированы, а какие нет. Есть ли способ обеспечить чтение листа Excel в определенном формате даты?

Я попытался изменить конфигурацию IMEX на 1 в строке подключения. Также пытался в коде определить даты, но это невозможно, поскольку 01-02-2019 может быть 02 января или 01 февраля.

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

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Path + ";Extended Properties=" + "\"" + "EXCEL 12.0 XML; HDR=NO; IMEX=1" + "\"";

Я открываю файл Excel в скрипте и перебираю строки.

В Excel есть даты, подобные этим:

  • 01/31 /19
  • 01/02/19
  • 08/19/19
  • 07/06/19

Когда я читаю его в SSIS Iполучить эти результаты:

  • 01/31/19
  • 02/01/19
  • 19/08/19
  • 06/07 /19

Как вы видите изменения формата даты для некоторых строк.

Есть ли способ обеспечить формат для всех прочитанных дат?

1 Ответ

0 голосов
/ 25 октября 2019

Excel в основном виновник. Это заставляет свои собственные типы данных на SSIS. Если вы можете преобразовать этот столбец в текст, это хорошее начало. (но в основном это пользовательский ввод, верно? скорее всего нет)

Проблема может заключаться в том, что если региональные настройки на компьютерах (сервер / пользователи) не совпадают, формат не будет таким же, как в Excelочень сильно зависит от региональных условий. (Но это не так актуально, если это все на одном компьютере)

Вторая проблема, с которой я столкнулся, это преобразование SSIS в DATE не согласовано. В большинстве моих столбцов дат Excel в SSIS я преобразовываю столбец в Unicode, а затем создаю его в выражениях, используя SUBSTRING и +. (Я думал, что это было глупо, пока не решило проблему большую часть времени. Поэтому я придерживался его.)

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

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