2015-01-05 6 views
1

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

Источник данных запрашивает столбцы первичного ключа. Формат вывода для файла для этого столбца должен быть от, например: 000000156, если исходный столбец имеет значение 156. Таким образом, формат вывода для этого столбца должен иметь длину 9 с заполненными нулями.

Для того, чтобы достичь этого я написал запрос следующим образом:

select left(('000000000' + case(clientid as varchar(9)), 9) as clientname from client 

Я проверил выход источника данных и возвращает 000000125, например. Я сопоставил столбцы источника с выходом flatfile с правильной длиной.

Но когда я попытался увидеть выход файла или предварительный просмотр диспетчера подключений файлов, я вижу только «125» в первом столбце, что означает, что я не вижу заполненные нули, и у меня есть пробелы. Я ожидаю, что первая колонка будет иметь формат «000000125». Не уверен. Что мне не хватает, и я новичок в SSIS.

+1

На выходе вашего источника данных убедитесь, что для этого столбца используется строковый тип данных, а не числовой. –

+0

@TabAlleman Это сработало Tab. Благодаря тонну. Я не знаю, как отмечать urs как ответ, как вы прокомментировали здесь. – SARAVAN

+0

'left (('000000000' + case (clientid as varchar (9)), 9)' Er, я предполагаю, что вы имеете в виду 'RIGHT()', а не 'LEFT()'. Как написано, это всегда будет возвращено '000000000''. Предположим, что' cast() 'вместо' case'. –

ответ

2

Проверьте выходные данные вашего источника данных; похоже, что вы используете числовой тип данных. Попробуйте изменить его на строку.