2010-06-24 83 views
0

我有一个非常简单的任务,即将Excel工作表导入到SQL 2005数据库表中。我需要为此创建一个SSIS任务。 Excel工作表没有所有需要将插入直接插入永久性sql表的列,但我知道如何链接到其他表并获取缺少的列。所以我想知道如何将Excel工作表导入#tempTable(或@VariableTable),然后在临时表中创建一个我可以编写我的SQL插入代码(使用temptable以及我将链接的其他表)在一个基本的执行SQL任务。但是我很难弄清楚如何用SSIS来做到这一点。当我拖动我的Excel源并尝试将其链接到SQL Server目标时,下拉列表中没有用于临时表的选项。SQL SSIS帮助。将Excel表导入临时表

+0

你是怎么想加入你已经在你的表中的数据,新数据? SSIS有许多转换(查找等),可以从其他表中加载数据,从而允许您构建最终数据流,然后插入成品。 – 2010-06-24 18:48:18

+0

另外,您可能会发现OLE DB目标为您提供比SQL Server目标更大的灵活性,这对于您想要执行的操作可能更有用。 – 2010-06-24 18:51:51

+0

没有prefrence如何加入数据。我只是在想这样的事情: 插入到FinalTable(Col1,2 ...,3) 从#NewTempTableFromExcel在t1处选择t1.field1,t2.field2,t3.field3 内部连接表2作为t2在t2 .ID = t1.ID 但是,如果我可以在一步完成所有工作,甚至无需创建一个非常棒的临时表。 – 2010-06-24 19:06:02

回答

0

这样做的SSIS方法将使用合并或查找转换。我不认为你可以把东西放到临时表中,但是你可以有一个ExecuteSQL任务来创建一个真正的表,然后你可以把它放在包的最后。然后你可以让你的软件包使用它。

在设计期间,您可能需要将表格链接起来,但实际运行程序包时不需要在那里。

+0

我会从哪开始?我仍然使用Excel来源?到目前为止,我能做的唯一事情就是直接从Excel导入到SQL表中,而无需进行任何修改或链接? – 2010-06-24 21:38:28

+0

是的,你可以从Excel源码开始。如果你想在包中创建一个表,只需在你的数据转换任务之前添加一个执行SQL任务来创建它,然后在末尾添加一个执行SQL任务来清理它。如果要使用合并连接或查找,则可以使用Excel源作为一个输入,并将SQL表作为另一个用于转换。这些都是在数据转换任务中完成的。 – 2010-06-25 01:28:32

0

首先,您需要为Excel工作表创建登台表。打开SSMS,右键单击数据库,选择任务,导入数据。将导入源设置为excel。浏览到该文件。将目标设置为SQL Server。您可以接受表名或按照您的意愿命名。我建议把它命名为有用的东西。根据您对数据类型的理解以及Excel表格中的内容,可能需要一段时间才能做到这一点。最终,您将拥有一个表格,它将接受Excel表格的内容。

其次,通过使用excel源和sql服务器或oledb目标创建您的ssis包。

0
  1. 采取在控制流程中执行SQL任务来创建excel表surce的目标登台表。

  2. 在数据流中使用excel源和oled数据库目标到登台表在第一步创建。

3.在控制流中,使用合并或连接语句到您的excel目标登台表与其他源表到最终目标表。

感谢 prav

+0

但是,步骤1中创建的#tmpTable不在下拉列表中,可以在步骤2 oled db目标表中进行选择。 – 2010-06-24 22:49:33

+0

使用与excel源代码相同的结构派生表,并在优先级约束条件下使用完成状态删除该进程的末尾。 #table不是一个理想的,因为它的范围,也没有推荐由于并行处理。 – prav 2010-06-24 23:15:19