【发布时间】:2018-03-01 15:01:10
【问题描述】:
您好,我对 ssis 有一个疑问, 源位置有不同的文件每个文件名都带有位置名称。这里我们要加载 每个文件名对应表使用ssis包。
源位置对于每个位置名称文件都有多个文件; 示例:文件位置:c:\Sourcefile\ 文件名类似于:hyd 文件、bang 文件。 Hyd 文件如下: hyd.txt、hyd1.txt hyd2.txt 都是相同的结构。hyd 相关的所有文件仅加载到 hyd 表中。 bang 文件类似于:bang.txt,bang.txt bang2.txt 都是相同的结构。bang 相关的所有文件只加载到 bang 表中。 只有所有源文件和目标表结构相同。
源文件结构:用于 hyd.txt 文件
Id,name,loc
1,abc,hyd
2,hari,hyd
for hyd1.txt file
id,name,loc
4,banu,hyd
5,ran,hyd
similar to bang:
id,name,loc
10,gop,bang
11,union,loc
for bang1.txt file
id,name,loc
14,ja,bang
这里所有与 hyd 相关的文本文件都加载到 sql server 数据库表中的 hyd 表中。类似于 bang fils 加载到 bang 表中。 hyd 表结构:
CREATE TABLE [dbo].[hyd](
[id] [int] NULL,
[name] [varchar](50) NULL,
[loc] [varchar](50) NULL
)
similar to bang
CREATE TABLE [dbo].[bang](
[id] [int] NULL,
[name] [varchar](50) NULL,
[loc] [varchar](50) NULL
)
我尝试如下: 以上一个表名称没有动态变化。我在表变量中保留了统计值。那时所有与位置相关的记录都被加载到一个表中。 如何在 ssis 中将多个文件加载到多个目标表中。请告诉我如何在 ssis 中完成此任务
【问题讨论】:
-
为什么不能添加2个数据流任务?
-
我同意@BHouse 的观点,2 个数据流似乎是一种更有效的工作方式,但在您当前的包中,我会说问题是位置变量的更新,您可能需要一个脚本更新任务。
-
实际上在我的源端有 100 + 文件名。所以我们不能在它可能添加的功能中再次执行 100 dft。所以我们需要在基于文件名传递的目标表中动态执行。
-
你可以为 hyd 做一个,为 bang 和 load 做一个并行,但无论如何我认为问题是变量位置的更新,你是在派生列转换中做的吗?跨度>
标签: sql-server ssis etl ssis-2012