2016-07-20 8 views
1

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

Пожалуйста, поделитесь некоторыми знаниями со мной ...

Спасибо!

+0

мой первый мысль нет, не делаю. следующий подумал что? Вы хотите, чтобы диспетчер соединений игнорировал разделители и импортировал все как 1 поле, если так просто настроить разделители на несуществующий combiantion (возможно, pipe |). Или вы хотите изменить файл с разделителями на файл с фиксированной шириной, а затем использовать поток данных и добавить расчетные столбцы, в которых ячейки ячеек основаны на длине – Matt

ответ

0

Сценарий задачи на помощь. Если предположить, что плоский файл имеет унифицированные разделители для каждой строки т.е. каждая строка в файле разделяются сказать запятой, как идти о бы -

  1. Перетащите преобразование Задача сценария и передать путь к файлу плоского входного файла
  2. Начать чтение файла по строкам.
  3. С помощью цикла получайте вхождения разделителя (вы можете использовать функцию Split для получения счета) в качестве ключа и всей строки в качестве значения. Храните этот результирующий набор в объекте словаря.
  4. Получите максимальное значение ключей из словаря, используя функцию Dictionary.Keys.Max(). (В основном наибольшее количество вложений разметки на строку) и хранить его в переменной MaxCount.
  5. Теперь проведите через каждую пару Key/Value. Для каждой строки, имеющей значение Key меньше MaxValue, добавьте пустые пустые разделители, то есть скажем, если разделитель Max на строку равен 5, а в строке - только 2, используйте для каждого цикла добавьте еще 3 пустых разделителя, т. Е. ».
  6. Использование StreamWriter позволяет получить все значения словаря в новый файл.

Для этого вам потребуется использовать классы System.IO и System.LINQ. При использовании в SSIS 2008 убедитесь, что для Project Framework установлено значение 3.5 для работы.

Новый файл будет иметь равномерную длину.