Следуя инструкциям в блоге MSSQLTips, у меня есть установочный пакет с циклом Foreach для циклического прохождения всех листов в рабочей книге и импорта данных в таблицу.
Цикл находит правильный лист ('11-18$'
), а затем тот же лист с более длинным именем ('11-18$'_xlnm#_FilterDatabase
).Дополнительный лист вызывает data duplication
и сообщения об ошибках, такие как "Derived Column.Outputs[Derived Column Output].Columns[SourceSheet]" specifies failure on truncation
.
Сообщение в блоге MSSQLTips-- Чтение данных из нескольких рабочих таблиц Excel SSIS
Настройка цикла по каждому элементу:
Переменная
- Переменная is
Name:'Sheet Name'
, Scope:'Import_AXExtractAgristatsInventory'
(название пакета), Date type:'String'
, Value:'11-18$'
Редактор цикла по каждому элементу
Перечислитель коллекции is Foreach ADO.NET Schema Rowset Enumerator
Поставщик подключений is .Net Providers for OleDb\Microsoft Office 12.0 Access Database Engine OLE DB Provider
Файл подключения - это путь к \\filepath\file.XLSX
Расширенное свойство подключения Connection равно Excel 12.0
Отображение переменной соединения равно Variable:='User:SheetName'
, Index:='2'
Строка подключения равно Data Source=C:\filepath\file.xlsx;Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;
Обновление: Foreach ADO.NET Schema Rowset Enumerator
и Set Restrictions
ограничение
Я думал, что вариант Set Restrictions
поможет (исключаялисты фантома) с таким выражением, как !=*_FilterDatabase*
, но в соответствии с выдержкой из электронной книги на сайте flylib подстановочные знаки не подходят ...
Перечислитель наборов схем ADO.NET предоставляет способперечислите схему для источника данных.Например, вы можете перечислить таблицы в базе данных, каталоги на сервере или столбцы для таблицы.Для каждой схемы вы можете отфильтровать результаты несколькими способами.На рисунке 13.13 показан редактор перечислителя строк схемы Foreach ADO.NET с выбранной схемой каталогов.
Нет способа указать подстановочный знак для ограничений.
Ссылка: MicrosoftСлужбы интеграции SQL Server 2005: счетчики Foreach
- Рисунок 13.13.Перечислитель набора строк Foreach ADO.NET предоставляет способ перечисления схемы базы данных.
- На рисунке 13.14 показано диалоговое окно "Ограничения схемы таблиц" для схемы таблиц.
Обновление: отладка значений в цикле
В попытке отладить объекты листа в цикле я наконец нашел способ остановить цикл иотобразить имя листа.Я нашел статью о публикации в блоге Pragmatic Works, в которой показано, как использовать Script Task
, Break Point
и Watch Window
для отображения значения активного цикла - Цикл по наборам результатов с циклом foreach .
![enter image description here](https://i.stack.imgur.com/VIPCk.png)
Это рекомендуемые вопросы SO ...