在SSIS中将文件名存储在变量中并使用文件名创建表格

3
我有几个Excel源文件在SSIS中的一个文件夹中。我想从这些Excel文件中提取数据并加载到SQL表中。 我的问题是,我想逐个保存所有文件名,并希望创建与文件名完全相同的SQL表,然后将每个Excel文件加载到相应的表中。 请帮助我如何创建一个这样的包。
2个回答

3

Jayvee已经提供了高层次的概述,这已经足够好了!让我稍微详细一点。

我假设你有动态Excel文件连接。

  1. 声明一个变量并将其命名为FileName。并将其分配给文件夹中可用的第一个文件名。 FileName

  2. 放置Foreach Loop Container并双击它。指定Folder:Files:如下图所示。 enter image description here

  3. 在同一个Foreach Loop Editor中,转到Variable Mappings。从下拉列表中选择Variable。这是我们在第一步中定义的相同变量。将其Index设置为0。点击OKenter image description here

  4. 剩余的任务与Jayvee解释的相同。

查看this链接以获取更多帮助。以及结果集属性未正确设置。我认为将ResultSet属性设置为SingleRow即可完成工作。


谢谢。我已经这样做了,但是我仍然遇到错误。这是我在执行Sql任务中所做的事情。 我的Sql语句是这样的 Create Table ? (Id Int, Name varchar(20) ) 这样可以吗?还是我漏掉了什么? - user3220846
然后我正在将User :: FileName变量映射到参数映射中。 - user3220846

0

您的控制流程应该如下所示:

enter image description here


我该如何在OLEDB目标中动态设置表名? - user3220846
对于每个容器,读取文件夹并使用文件名更新变量。根据变量执行SQL创建表。数据流加载文件。假设您知道文件的结构。还有其他选项可使用重命名和/或脚本任务,这取决于您的要求。 - Jayvee
实际上我正在尝试同样的事情,但是在创建表时执行SQL任务时出现错误。我收到的错误信息是“结果集不正确”。请问您能否告诉我需要更改Execute SQL Task中哪些属性? - user3220846
如果您只是创建表格,则结果集属性应设置为“无”。 - Jayvee
是的,结果集被设置为None,但即使如此我仍然得到相同的错误。 - user3220846
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接