Как установить длину для числового столбца и даты и времени в SSIS?

У меня есть плоский файл (CSV-файл), который извлекается и загружается в другой плоский файл по его положению. Например, у меня есть 3 столбца, такие как тип записи, номер Emp и дата с ограничением позиции. Например, тип записи имеет длину 2 с типом данных alpha , номер Emp имеет длину 6 с числовым типом данных и дату с типом длины 26 в формате гггг-мм-дд.чч.мм.сс. 000000.

Итак, мой результат в плоском файле будет выглядеть так

016543092011-08-05.11.08.34.000000
026540392011-08-05.11.10.59.000000

у меня две проблемы

Во-первых, я не могу установить длину числового значения 6, когда я извлекаю файл csv, поскольку, когда я указываю тип данных числа Emp как числовой, моя длина блокируется, и мне разрешено изменять только точность в Flat источник файла, а также в преобразовании данных тоже. И в результате рядом с этим полем добавлено больше пробелов, которые не нужны в моем выходном файле.

Следующий - с датой и временем -> я не могу установить длину для этого, как только я установил этот столбец с типом данных даты и времени с точностью.

С моим текущим результатом я получаю такой вывод (я не могу избежать пустого места, которое находится между ними, поскольку я не могу установить длину как для числового, так и для даты и времени)

01654309                 2011-08-05.11.08.34.000000
02654039                 2011-08-05.11.10.59.000000

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


person Varun    schedule 06.08.2011    source источник


Ответы (1)


SSIS экспортирует нестроковые типы данных в плоские файлы, неявно преобразовывая их в строки, поскольку плоские файлы могут хранить только строковые значения. Поскольку преобразование является неявным, вам негде контролировать это преобразование. Вам нужно сделать преобразование в строку явным, а затем вы можете поставить его под свой контроль, чтобы получить нужный формат. Добавьте компонент «Производный столбец» перед «Назначением». В этом производном столбце явно преобразуйте числа, например, создайте новый столбец и используйте такое выражение, как RIGHT("000000" + (DT_WSTR, 6)[EmpNumber], 6), чтобы получить строку, заполненную начальным нулем. В назначении плоского файла вам нужно будет сопоставить этот НОВЫЙ столбец вместо EmpNumber. Вам также придется изменить диспетчер соединений с плоскими файлами, чтобы изменить тип данных на строку длиной 6 (в противном случае вы получите ошибки проверки).

person Todd McDermid    schedule 07.08.2011