Динамическая загрузка файлов .xlsx в ssis

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

но теперь мне нужно, чтобы пакет ssis обрабатывал загрузку файлов Excel с 3 различными файловыми структурами. т.е. в одном файле будет 50 столбцов, в одном - 55, а в одном - 60.

Я пробовал использовать скрипт для загрузки данных

Insert into <rawdatatable> select * from openrowset('Microsoft.Jet.OLEDB.4.0','excel 8.0; database=D:\SSIS\FileToLoad.xlsx', 'Select * from [Sheet1$]')

но я продолжаю получать ошибку ниже, но добавление журнала ошибок не дает никаких других ошибок

Исключение было выброшено целью вызова

введите здесь описание изображения

Я использую SQL Server 2014 и VS 2013

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

Спасибо


person Noelle    schedule 23.01.2018    source источник
comment
Эта ошибка нам ни о чем не говорит. Добавьте обработку ошибок в задачу «Сценарий» и выведите фактическую ошибку. Вся эта ошибка фактически означает, что произошла ошибка.   -  person Larnu    schedule 23.01.2018
comment
Вы используете строку подключения для .XLS, а не .XLSX   -  person KeithL    schedule 23.01.2018


Ответы (1)


Вы должны использовать Microsoft.ACE.OLEDB.12.0 провайдера, попробуйте следующее:

Insert into <rawdatatable> 
select * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
                         'Excel 12.0;Database=D:\SSIS\FileToLoad.xlsx;HDR=YES', 
                         'SELECT * FROM [Sheet1$]')

Ссылки

person Hadi    schedule 23.01.2018