如何将多个输入分组到一个输出中
我有一个像这样的 Excel
region state city
-------------------------
south state1 city1
north state2 city2
,我想填充这样的数据库表
id name type
------------------------
1 state1 state
2 south region
3 city1 city
,但我不知道如何对这些列和标题进行分组以填充数据库表。有什么想法吗?我对这个应用程序很迷茫
I have an Excel like this
region state city
-------------------------
south state1 city1
north state2 city2
and I want to fill a data base table like this
id name type
------------------------
1 state1 state
2 south region
3 city1 city
But I don't have any idea about how to group these columns and headers to fill the data base table. Any ideas? I'm pretty lost with this app
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
数据流任务
中提供的Unpivot Transformation
在SSIS中实现此目的。以下示例说明了如何做到这一点。该示例使用SSIS 2008 R2
和SQL 2008 R2
数据库。分步过程:
使用示例数据创建一个 Excel 文件,如屏幕截图 #1 所示。我已将该文件命名为 Source.xlsx。
使用SQL 脚本部分中给出的脚本在 SQL Server 数据库中创建一个名为
dbo.Destination
的表。该表将填充 Excel 数据。我引入了一个名为 GroupId 的新字段,以便可以将数据分组在一起。在 SSIS 包上,创建一个名为 Excel 的 Excel 连接和一个名为 SQLServer 的 OLE DB 连接,如屏幕截图 #2 所示。
Excel 连接管理器
应按屏幕截图 #3 所示进行配置。 OLE DB 连接将配置为连接到您选择的数据库。在包的
控制流
选项卡上,放置一个数据流任务
,如屏幕截图#4所示。使用
Excel 源
、脚本组件
、逆透视转换
配置数据流选项卡,如屏幕截图 #5 所示code> 和OLE DB 目标
。配置
Excel 源
,如屏幕截图 #6 和 #7 所示。这将从 Excel 文件中读取数据。将
脚本组件
配置为转换并添加输出
列,如屏幕截图#8所示。在脚本
部分,单击编辑脚本
并将代码替换为脚本组件代码部分下给出的代码。配置 Unpivot 转换,如屏幕截图 #9 所示。我们不想转换 GroupId,因此不要对其进行配置,而是将其设置为
Pass Through
。配置
OLE DB 目标
,如屏幕截图 #10 和 #11 所示。Screenshot #12 显示包执行之前
dbo.Destination
表中的数据。屏幕截图 #13 显示包执行。
Screenshot #14 显示包执行之后
dbo.Destination
表中的数据。希望有帮助。
SQL 脚本:
脚本组件代码:
C# 代码,只能在
SSIS 2008 或更高版本
中使用。屏幕截图 #1:
屏幕截图 #2:
屏幕截图 #3:
屏幕截图 #4:
屏幕截图 #5:
屏幕截图 #6:
屏幕截图 #7:
屏幕截图 #8:
屏幕截图#9:
屏幕截图 #10:
屏幕截图 #11:
屏幕截图 #12:
屏幕截图 #13:
屏幕截图 #14:< /strong>
You can achieve this in SSIS using
Unpivot Transformation
available inData Flow Task
. Following example illustrates how this can be done. The example usesSSIS 2008 R2
andSQL 2008 R2
database.Step-by-step process:
Create an Excel file with sample data as shown in screenshot #1. I have named the file as Source.xlsx.
Create a table in the SQL Server database named
dbo.Destination
using the script given under SQL Scripts section. This table will be populated with Excel data. I have introduced a new field named GroupId so the data can be grouped together.On the SSIS package, create an Excel connection named Excel and an OLE DB connection named SQLServer as shown in screenshot #2.
Excel connection manager
should be configured as shown as in screenshot #3. OLE DB connection will be configured to connect to the database of your choice.On the package's
Control Flow
tab, place aData Flow Task
as shown in screenshot #4.Configure the Data Flow tab as shown in screenshot #5 with an
Excel source
,Script component
,Unpivot transformation
and anOLE DB destination
.Configure the
Excel Source
as shown in screenshots #6 and #7. This will read the data from Excel file.Configure the
Script Component
as Transformation and add anOutput
column as shown in screenshot #8. On theScript
section, clickEdit Script
and replace the code with the code given under Script Component Code section.Configure the Unpivot transformation as shown in screenshot #9. We don't want to transform the GroupId, so don't configure that but make it to
Pass Through
.Configure the
OLE DB destination
as shown in screenshots #10 and #11.Screenshot #12 shows data in the table
dbo.Destination
before the package execution.Screenshot #13 shows the package execution.
Screenshot #14 shows data in the table
dbo.Destination
after the package execution.Hope that helps.
SQL Scripts:
Script Component Code:
C# code that can be used only in
SSIS 2008 or above
.Screenshot #1:
Screenshot #2:
Screenshot #3:
Screenshot #4:
Screenshot #5:
Screenshot #6:
Screenshot #7:
Screenshot #8:
Screenshot #9:
Screenshot #10:
Screenshot #11:
Screenshot #12:
Screenshot #13:
Screenshot #14: