我正在尝试从excel文件加载数据,其中一个非静态的sheetname(sheetname包含yyyymmdd,它会随每个文件而改变)到SQL数据库表中。我按照How to loop through Excel files and load them into a database using SSIS package?提供的解决方案,但只能设法获得第一个for循环工作。当我尝试在数据流任务下将用户变量“Sheetname”分配给Excel Source时,我收到错误 -
CSSN_Invoice出现错误[连接管理器“TEST MKBS CONNECTION”]:SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80004005。 OLE DB记录可用。来源:“Microsoft Access数据库引擎”Hresult:0x80004005描述:“无效的参数。”。
数据流任务错误[MKBS Sheetname [1]]:SSIS错误代码DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。 AcquireConnection方法调用连接管理器“TEST MKBS CONNECTION”失败,错误代码为0xC0202009。在此之前可能会发布错误消息,其中包含有关AcquireConnection方法调用失败的原因的更多信息
当工作表名称被选为“表格或视图”而不是“表名或视图名称变量”时,数据流任务正常工作
请帮忙!
答案 0 :(得分:0)
创建数据流任务以将工作表名称读入ADO对象。
第一项是脚本组件作为源。 我有一个变量用于Excel电子表格的连接字符串
创建了SheetName的输出
您基本上是使用oleDB打开电子表格。 将表名放入数据表
循环遍历数据表并写出要输出的行。
确保关闭连接!如果不这样做,这可能会导致错误。
下一步是条件拆分,因为某些原因结果有选项卡名称的重复,它们都以'_'结尾。
下一步是派生一个列来清理exta“'”
的工作表名称创建一个Object类型的变量:我命名为我的ADO_Sheets
插入记录集目标对象: 1.将变量设置为刚刚创建的变量 2.映射干净工作表的列
配置foreach ... 调查员:Foreach ADO调查员 资料来源:ADO_Sheets 变量映射:设置为名为SheetName的变量
我在循环中有一个函数任务,但它更易于理解,它可能已经在变量中:
此变量现在是您从该页面中提取数据的选择。
最后是您要运行的数据流任务。
很多工作,但我经常使用这个,我以为我会分享!!!