Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何使用ssis 2008循环浏览excel文件并获取sheetname_Sql Server_Excel_Ssis_Etl_Ssis 2008 - Fatal编程技术网

Sql server 如何使用ssis 2008循环浏览excel文件并获取sheetname

Sql server 如何使用ssis 2008循环浏览excel文件并获取sheetname,sql-server,excel,ssis,etl,ssis-2008,Sql Server,Excel,Ssis,Etl,Ssis 2008,我正在尝试将数据从具有非静态sheetname的excel文件(sheetname包含yyyymmdd,它将随每个文件而更改)加载到SQL数据库表中。我遵循上提供的解决方案,但只能设法使第一个for循环工作。当我试图在数据流任务下将用户变量“Sheetname”分配给Excel Source时,我得到了错误- CSSN_发票[Connection manager“TEST MKBS Connection”]处出错:SSIS错误代码DTS_E_OLEDERROR。发生OLE DB错误。错误代码:0

我正在尝试将数据从具有非静态sheetname的excel文件(sheetname包含yyyymmdd,它将随每个文件而更改)加载到SQL数据库表中。我遵循上提供的解决方案,但只能设法使第一个for循环工作。当我试图在数据流任务下将用户变量“Sheetname”分配给Excel Source时,我得到了错误-

CSSN_发票[Connection manager“TEST MKBS Connection”]处出错:SSIS错误代码DTS_E_OLEDERROR。发生OLE DB错误。错误代码:0x80004005。 OLE DB记录可用。来源:“Microsoft Access数据库引擎”Hresult:0x80004005说明:“无效参数。”

数据流任务[MKBS Sheetname[1]]出错:SSIS错误代码DTS_E_无法从ConnectionManager获取重新连接。对连接管理器“TEST MKBS connection”的AcquireConnection方法调用失败,错误代码为0xC0202009。在此之前可能会发布错误消息,其中包含有关AcquireConnection方法调用失败原因的更多信息

当sheetname被选为“表或视图”而不是“表名或视图名变量”时,数据流任务工作正常


请帮忙

创建一个数据流任务,将工作表名称读入ADO对象

第一项是作为源的脚本组件。 我有一个变量,用于连接Excel电子表格的字符串

已创建SheetName的输出

以下是读取选项卡名称的代码:

您基本上是使用oleDB打开电子表格。 将表名放入数据表中

循环遍历数据表并写出要输出的行

确保关闭连接!!!如果不这样做,以后可能会导致错误

下一步是条件拆分,因为出于某种原因,结果中有重复的选项卡名称,它们都以“\u1”结尾

下一步是派生一列以清除exta“'”的工作表名称

创建一个Object类型的变量:我将我的命名为ADO_Sheets

插入记录集目标对象: 1.将变量设置为刚创建的变量 2.将列映射为“干净表”

现在回到控制流并设置foreach循环控制:

配置foreach。。。 枚举器:Foreach ADO枚举器 资料来源:ADO_Sheets 变量映射:设置为名为SheetName的变量

我在循环中有一个函数任务,但它更易于理解,它可能在变量中出现:

现在,您可以选择此变量从该页面提取数据

最后是要运行的数据流任务


很多工作,但我经常使用它,我想我会与大家分享

很快就会有答案。它使用了一个脚本任务。我在我发布的原始链接的帮助下使它工作了——我从答案中漏掉了一步,这就是为什么它不工作的原因。但现在一切都好了!嗨,基思,谢谢你的回复。据我所知,您的解决方案是从excel文件中获取Sheetname。我的问题不是无法检索Sheetname,而是我可以使用我在原始问题中提供的链接来检索Sheetname。我的问题是,当我试图将该变量分配给数据流任务下的excel源时。我也遵循了您的解决方案,但在脚本组件上出现错误-初始化字符串的格式不符合从索引0开始的规范。我完全按照你提到的方式来做。另外,我正在使用SSIS 2008。您的问题似乎是如何使用选项卡名称。尝试将任何表达式放在使用具有表名的变量创建sql语句的变量上。