将数据从表变量SSIS插入到新创建的表中,而不是单个表

时间:2016-03-29 02:07:04

标签: sql-server csv foreach ssis

我现在已经搜索了大约一个星期,我想知道是否有人可能有线索。我写了一个包来做以下事情:

  1. 循环访问具有特定命名结构的csv的父文件夹及其子文件夹(正常工作)

  2. 根据每个文件的枚举(工作)为每个.csv创建一个表。

  3. 将数据导入到自己的表中的sql server中,文件名是作为表名创建的,而不是OLE DB Destination(不起作用)。如果它存在所有内容的目标文件夹,但是当我使用不起作用的表变量时,它可以工作。

  4. 我所做的是为每个容器添加一个执行SQL任务,以创建一个表,该表包含文件路径的变量,该表被映射为属性sqlstatementsource表达式下的create table查询中for each容器中的表达式。这些表是创建的,但是当我使用为每个循环映射的变量作为OLE DB目标中的表名或变量时,我收到一个错误,要求我检查表是否存在。表已创建,但我无法将数据插入到自己的表中。即使我绕过&#34的错误;还没有提供目的地表"并运行包。我将delayValidation设置为true,但仍然没有。从我到目前为止看到的SSIS做了一些很酷的事情。但是,我现在被困住了。还有什么我做错了?

    我忘了提到数据将转到sql server。

    感谢您的一切。

1 个答案:

答案 0 :(得分:0)

您无法在设计时使用表名变量创建OLEDB目标。 OLEDB目标需要知道表名和列,以便它可以将数据流预先映射到表列。

您还有其他几种选择:

  1. 您可以使用BiML动态创建数据流和目标。
  2. 您可以使用ExecuteSQL Transformation作为数据流目标,并编写一个动态SQL语句,将数据流中的每一行插入到所需的表中。