Я застрял на вышеуказанном.
Обзор
Я создал пакет служб SSIS, который просматривает папку с файлами Excel, извлекает данные из них. файлы и вставки в таблицу SQL.
Каждый день создается новая папка в соответствии с 30 03 2020, 31 03 2020, 01 04 2020, et c.
Мой пакет справляется с этим и работает от начала до конца без помех.
Однако я хочу добавить имя файла к каждому набору данных в целевой таблице SQL посредством столбца Производные.
Здесь у меня проблема.
Я могу добавить полный путь к файлу и имя, но мне кажется, что я не могу извлечь имя файла самостоятельно.
Среда
Я создал контейнер ForEachL oop, в котором я установил для Enumerator значение «Foreach File Enumerator», добавил полный путь к папке и установил для файлов значение « .xl »
Для параметра «Получить имя файла» задано значение «Полностью квалифицировано»
В сопоставлениях переменных я добавил переменную strFullFilePath с индексом 0.
Затем я добавил в поток данных и большинство недавно задача «Сценарий».
Из потока данных я перетащил в источник Excel.
Я создал диспетчер подключений Excel, указав полный путь и имя файла одного из файлов. Я хотел загрузить.
Я установил для моего режима доступа к данным команду SQL из переменной.
Сохраняя это, я установил свойство диспетчера подключений Excel для передачи имени файла dynamici c превзойти строку подключения во время выполнения меня, добавив переменную @ [User :: strFullFilePath] в выражение ExcelFilePath.
Я закончил, создав назначение OLE DB SQL SERVER для моей целевой таблицы и сопоставил поля.
Пакет работал без проблем и загружал все файлы, пока я не добавил задачу «Сценарий» и следовал некоторым советам, которые я видел в сети.
Задача «Сценарий» в настоящее время настроена следующим образом: -
Microsoft Visual Basi c 2017
Точка входа: - Main
ReadWriteVariables: - User :: strFullFilePath
Когда вы редактируете скрипт, у меня есть код : -
Publi c Sub Main ()
Dts.Variables("strFullFilePath").Value = System.IO.Path.GetFileName(Dts.Variables("strFullFilePath").Value.ToString())
Dts.TaskResult = ScriptResults.Success
End Sub
Когда я сейчас запускаю пакет, задача скрипта, кажется, выполняется нормально, но загрузка основного файла Excel завершается неудачно с сообщением «[Основной источник данных Excel [2]] Ошибка: невозможно получить информацию о столбце из источника данных. Убедитесь, что ваша целевая таблица в базе данных доступна. ”
Я не уверен, но может показаться, что Пакет теперь думает, что Путь к файлу - это 0, который мы ввели в Для каждого L oop Контейнер.
Я пробовал несколько различных сценариев ios, помещая «User ::» перед именем переменной в скрипте, а также пробуя следующее: -
Dts.Variables ("strFileName"). Value = System.IO.Path.GetFileName (Dts.Variables ("strFullFilePath"). Value.ToString ())
Но это просто дает мне задачу сценария DTS: Ошибка выполнения: - Исключение было выдвинуто целью вызова.
Теперь я полностью озадачен.
Любая помощь / предложения будут с благодарностью.
С уважением,
NJ C