如何循环访问excel文件并使用ssis 2008获取sheetname
我想从一个非静态的sheetname(sheetname包含yyyymmdd,这将改变每个文件)的Excel文件加载到SQL数据库表中的数据。 我遵循如何通过Excel文件循环提供的解决scheme, 并使用SSIS包加载到数据库中? 但只能设法获得第一个循环工作。 当我试图将数据stream任务下的用户variables“Sheetname”分配给Excel Source时,出现错误 –
CSSN_Invoice错误[连接pipe理器“testingMKBS连接”]:SSIS错误代码DTS_E_OLEDBERROR。 发生OLE DB错误。 错误代码:0x80004005。 OLE DBlogging可用。 来源:“Microsoft Access数据库引擎”Hresult:0x80004005描述:“无效的参数。”
数据stream任务错误[MKBS Sheetname [1]]:SSIS错误代码DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。 AcquireConnection方法调用连接pipe理器“testingMKBS连接”失败,错误代码0xC0202009。 在此之前可能会发布错误消息,更多关于为什么AcquireConnection方法调用失败的信息
数据stream任务工作正常时,表名被选为“表或视图”,而不是“表名或视图名称variables”
请帮忙 !
创build数据stream任务以将表名读入ADO对象。
第一项是作为源的脚本组件。 我有一个连接string到Excel电子表格的variables
创build了SheetName的输出
这是读取标签名称的代码:
你基本上是用oleDB打开电子表格。 将表名放入数据表中
循环访问数据表并写出要输出的行。
确保closures连接! 如果不这样做,以后可能会导致错误。
下一步是条件拆分,因为结果有重复的选项卡名称,它们都以'_'结尾。
下一步是派生一个列来清除表格名称的“'”
创build一个Objecttypes的variables:我命名为我的ADO_Sheets
插入logging集目标对象:1.将variables设置为您刚创build的variables2.映射干净页的列
现在回到控制stream程并设置一个foreach循环控制:
configurationforeach …枚举器:Foreach ADO枚举器源:ADO_Sheetsvariables映射:设置为一个名为SheetName的variables
我在循环中有一个函数任务,但它更容易理解,它可能已经在variables:
现在,这个variables是您select从页面中提取数据的select。
最后是您要运行的数据stream任务。
洛特的工作,但我经常使用这个,我想我会分享!