Строка подключения служб 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, когда он не назначает значение переменной внутри компонента. Это означает, что если вы внутри цикла, он не будет присваивать значение, пока не завершит цикл. Это относится и к потокам данных. Обходной путь состоит в том, чтобы предварительно установить это значение, как вы предлагали во вложенном цикле. Если вы не возражаете, мы можем использовать это как комментарий, чтобы помочь вам с вашим решением.