Есть ли способ изменить порядок полей в источнике плоских файлов служб SSIS?
У меня есть пакет служб SSIS, использующий источник плоских файлов с разделителями табуляции с TON полей. Недавно поставщик плоского файла с разделителями табуляции решил изменить формат плоского файла, разбрасывая в файл пару десятков новых случайных полей. Излишне говорить, что это шланг посылки.
Вместо того, чтобы перестраивать другой источник плоских файлов и заново определять все поля, типы и длины, есть ли способ переупорядочить поля в источнике плоских файлов? Конечно, было бы неплохо, если бы Microsoft разрешила вам перемещать поля на панели "Расширенные столбцы", но неааааа.
Любая помощь приветствуется.
6 ответов
Если вам нужно только добавить столбцы в ваш файл, вы можете сделать это в редакторе соединений с плоскими файлами. В расширенном окне вы можете выбрать поле рядом с новым и щелкнуть шеврон рядом с кнопкой "Новый". Это даст вам выбор вставить до или после.
Если вам действительно нужно что-то изменить, вам нужно отредактировать исходный код XML. Если вы используете существующее определение файла в качестве руководства, вы можете относительно легко создать новое в Excel или T-SQL. Проще, чем вводить все заново, по крайней мере.
У меня была похожая проблема: мне нужно было изменить порядок столбцов в месте назначения моего плоского файла. Метод экономии времени, на котором я остановился:
- Удалите назначение FF и диспетчер соединений FF (запишите имя / местоположение файла!),
- Снимите флажки, которые включают выходные столбцы в исходном компоненте.
- Повторно включите столбцы в нужном вам порядке.
- Добавьте новое назначение FF и соединение FF прямо из раскрывающегося списка диспетчера соединений назначения FF.
- Как обычно, проверьте размеры столбцов в FF-соединении
Не прямой ответ на вопрос, но я пришел сюда в поисках совета о том, "как переставить столбцы назначения плоских файлов", возможно, это кому-то поможет.
Я не видел решения этой проблемы. Служба SSIS не очень сильна в изменении метаданных. Вы можете попробовать сделать это в блокноте, но это очень сложно и очень глючно. Я бы не рекомендовал это вам.
Это по-прежнему «особенность» SSIS. Чтобы обойти это, я создаю подключение к плоскому файлу с именем «NULL» с одним столбцом с именем «NULL». Используйте кнопку «Создать», чтобы добавить столбец. Я меняю имя столбца по умолчанию с «Столбец 0» на «NULL». Это имя столбца не должно совпадать ни с одним именем столбца в списке, который нужно заполнить повторно. Если у вас есть реальный столбец с именем «NULL», выберите другое имя столбца, которое не используется. Вы можете сохранить в проекте подключение к неструктурированному файлу "NULL" для последующего использования. (Я ожидаю, что это понадобится еще несколько раз в этом проекте.)
В этом примере я использую плоское назначение файла. Измените назначение плоского файла, чтобы использовать соединение NULL.
Проверьте сопоставление и убедитесь, что столбцы не сопоставлены. Сохранение этого сбрасывает метаданные, сохраненные для сопоставления.
Наконец, измените назначение плоского файла обратно на правильное соединение, чтобы получить новое сопоставление без вмешательства метаданных.
Мой пример — назначение плоского файла. Он должен работать для источника плоского файла для сброса метаданных. Это похоже на прием изменения запроса на «выберите 1 как [NULL]» и обратно для очистки метаданных при использовании источника ODBC или подобного.
В диспетчерах соединений ниже вашей IDE вы можете дважды щелкнуть имя вашего файла и редактировать все, что вы хотите.
Возможно, вы могли бы попробовать что-то, но я не проверял.. использовать выражения, чтобы установить все для вашего источника плоских файлов? отключить проверку времени проектирования