如何在ssis中将多个文件加载到多个目标表中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在ssis中将多个文件加载到多个目标表中相关的知识,希望对你有一定的参考价值。
我在ssis中有一个疑问,源位置有不同的文件,每个文件名都带有位置名称。我们希望使用ssis包加载每个文件名对应的表。
source loacation为每个locationname文件都有多个文件; exaple:文件位置:c: Sourcefile Filesnames如:hyd文件,爆炸文件。 Hyd文件来自:hyd.txt,hyd1.txt hyd2.txt都是相同的结构only.hyd相关的所有文件只加载到hyd表。 bang文件来自:bang.txt,bang.txt bang2.txt都是相同的结构.bang相关的所有文件只加载到bang表中。所有源文件和目标表结构仅相同。
source FIles结构:用于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
这里所有与水有关的文本文件都加载到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中执行此任务
答案
从截图中我有3条建议:
- 您必须将数据流任务
Delay Validation
属性设置为True
- 您必须在数据流任务之外更改
User::location
变量值,您可以在数据流任务之前使用以下表达式添加表达式任务@[User::location] = SUBSTRING(@[User::FileName],1,FINDSTRING(@[User::FileName,".",1) -1)
或使用脚本组件来实现此目的 - 或者你可以在每个循环中添加一个脚本任务,然后跟踪2个数据流任务,脚本任务检查文件名:如果它是
hyd
它执行第一个DFT,如果它是bang
它执行第二个:(检查此链接:Working with Precedence Constraints in SQL Server Integration Services )
以上是关于如何在ssis中将多个文件加载到多个目标表中的主要内容,如果未能解决你的问题,请参考以下文章
SSIS 将数据从 SQL db 复制到同一 excel 目标上的多个选项卡