Строка подключения служб SSIS Excel не обновляется перечисляемым файлом при запуске внутри контейнера цикла foreach с помощью задачи сценария aC#

Выпуск:

Мой путь к файлу менеджера соединений Excel не обновляется из-за обновленной переменной, передаваемой через перечислитель файлов Foreach.

Функциональные требования:

У меня есть набор файлов Excel внутри каталога, который мне нужно перебрать и импортировать в базу данных SQL Server.

Первое ограничение для этих файлов заключается в том, что в одной из колонок в каждой ячейке может содержаться до 3000 символов (не более 255 символов).

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

Схема решения:

Прототип: чтобы противостоять>255 символьным ячейкам и запрету на редактирование реестра, я решил использовать задачу Script, которая использует соединение Excel. Ссылка:
https://egilhansen.com/2015/07/28/ssis-solution-excel-data-source-text-truncation-column-more-than-255-characters/

У меня есть одна задача DataFlow, импортирующая один файл с использованием этого сценария, поэтому сценарий исправен.

К вашему сведению, задача потока данных содержит только 3 элемента потока данных: 1) Задача "Сценарий" для загрузки содержимого файла Excel 2) Производный столбец, который добавляет в перечисляемую цепочку строк 3) База данных ole, которая загружает их в базу данных.

Все файлы в папке Решение:

Затем я установил контейнер цикла по каждому элементу и скопировал в него задачу скрипта.

Я настроил свойства выражения соединения Excel, чтобы иметь свойство filepath, и сопоставил переменную имени файла с ним, с которым сопоставлен перечислитель файла foreach.

Наконец, я установил Delayvalidation для управления задачей потока, соединением Excel и свойствами диспетчера соединений Excel.

sidenote: В перечислителе Foreach File производный столбец правильно добавляет в перечисляемые имена файлов -> это просто строка подключения Excel, которая также не обновляется.

Заключительные комментарии: я возился с изменением выражения файла Excel на ConnetionString и добавил в другую переменную и задачу скрипта, чтобы изменить его внутри цикла foreach (используя переменную перечисляемого файла), но переменная ConnetionString не обновляется...... Теперь мне интересно, нужно ли мне вкладывать контейнер цикла foreach в существующий цикл foreach, чтобы обновить переменную строк подключения Excel перед тем, как перейти к основному сценарию

1 ответ

Решение

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

Другие вопросы по тегам