我对ssis有一点怀疑, 源位置有不同的文件,每个文件名都带有位置名称。我们想要加载 每个文件名使用ssis包对应表。
source loacation为每个locationname文件都有多个文件; exaple:文件位置:c:\ Sourcefile \ 文件名来自:hyd文件,爆炸文件。 Hyd文件来自:hyd.txt,hyd1.txt hyd2.txt都是相同的结构only.hyd相关的所有文件只加载到hyd表。 bang文件来自:bang.txt,bang.txt bang2.txt都是相同的结构.bang相关的所有文件只加载到bang表中。 所有源文件和目标表结构都是相同的。
source FIles Structure:for hyd.txt file
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
这里所有与水有关的文本文件都加载到sql server数据库表的hyd表中。类似于bang fils加载到bang表。 水表结构:
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中执行此任务
答案 0 :(得分:1)
从截图中我有3条建议:
Delay Validation
属性设置为True
您必须在数据流任务之外更改User::location
变量值,您可以在数据流任务之前使用以下表达式添加表达式任务
@[User::location] = SUBSTRING(@[User::FileName],1,FINDSTRING(@[User::FileName,".",1) -1)
或使用脚本组件来实现此目的
或者您可以在每个循环内添加一个脚本任务,其中包含2个数据流任务,脚本任务检查文件名:如果是hyd
则执行第一个DFT,如果是{{1} 1}}它执行第二个:(检查此链接:Working with Precedence Constraints in SQL Server Integration Services)