SSIS: источник данных Excel - если столбец не существует, используйте другой столбец - PullRequest
1 голос
/ 28 января 2020

Я использую оператор выбора в источнике Excel, чтобы выбрать только определенные c данные столбцов из Excel для импорта.

Но мне интересно, возможно ли выбрать данные таким способом, когда я выбираю, например, столбец с именем: Column_1, но если этот столбец не существует в Excel, он попытается выбрать столбец с именем Column_2? В настоящее время, если Column_1 отсутствует, то задача потока данных не выполняется.

Ответы [ 4 ]

1 голос
/ 29 января 2020

Самый простой способ - добавить две задачи потока данных, по одному потоку данных для каждого оператора выбора источника Excel, и использовать ограничения приоритета для выполнения второго потока данных в случае сбоя первого.

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

Но если возникнет похожая ситуация, я воспользуюсь задачей «Сценарий», чтобы проверить, существует ли столбец, и построю SQL команда динамически. Обратите внимание, что эта команда SQL всегда должна возвращать одни и те же метаданные (вы должны использовать псевдонимы).

Полезные ссылки

1 голос
/ 28 января 2020

Используйте задачу «Сценарий» и напишите код. net, чтобы прочитать файл Excel и затем выполнить проверку на доступность Column_1 в файле. Если столбец отсутствует, используйте Column_2 в качестве входных данных. Задача сценария в службах SSIS может выступать в качестве источника.

0 голосов
/ 29 января 2020

Рекомендуется, так как метаданные служб SSIS имеют статус c, любые проблемы с качеством и форматированием данных в исходных файлах должны быть исправлены до запуска задачи потока данных ssis.

Я видел эту ситуацию раньше и есть очень простое решение. В начале вашего пакета ssis, используя файловую задачу, создайте копию исходного файла Excel, а затем запустите сценарий c# или выполните команду powershell, чтобы переименовать столбцы, чтобы, если столбец 1 не существовал, он добавлялся либо в это исправлено в соответствующем месте в файле Excel или в случае неправильного имени столбца.

В результате этого вам не нужно обновлять sh ваши метаданные ssis каждый раз, когда они терпят неудачу. Это стандартная практика стандартизации данных.

0 голосов
/ 29 января 2020

SSIS основан на метаданных и не будет поддерживать динамические c метаданные, однако вы можете использовать Script Component , как @ nitin-raj, предложенный для обработки всех известных исходных столбцов. Ниже приведен хороший пост о том, как это можно сделать.

Dynami c Файловые соединения

Если у вас много таких файлов, которые могут иметь различные столбцы, тогда Лучше создать пользовательский компонент. Однако метаданные динамического c не могут быть созданы даже с пользовательским компонентом, поэтому набор столбцов должен быть заранее известен службам SSIS.

Если список столбцов продолжает изменяться и вы не можете заранее знайте, какие столбцы ожидаются, тогда вам лучше обрабатывать все это в C # / VB. Net с использованием Задача сценария потока управления

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