如何在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
)

我尝试如下:enter image description here enter image description here上面一个表名称没有动态。我在表变量中保持统计值。那时所有位置相关的记录都被加载到一个表中。如何在ssis中将多个文件加载到多个目标表中。请告诉我如何在ssis中执行此任务

答案

从截图中我有3条建议:

  1. 您必须将数据流任务Delay Validation属性设置为True
  2. 您必须在数据流任务之外更改User::location变量值,您可以在数据流任务之前使用以下表达式添加表达式任务 @[User::location] = SUBSTRING(@[User::FileName],1,FINDSTRING(@[User::FileName,".",1) -1) 或使用脚本组件来实现此目的
  3. 或者你可以在每个循环中添加一个脚本任务,然后跟踪2个数据流任务,脚本任务检查文件名:如果它是hyd它执行第一个DFT,如果它是bang它执行第二个:(检查此链接:Working with Precedence Constraints in SQL Server Integration Services

以上是关于如何在ssis中将多个文件加载到多个目标表中的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SSIS 将多个表中的数据插入到多个表中?

SSIS 将数据从 SQL db 复制到同一 excel 目标上的多个选项卡

如何在SSIS中将大型Excel文件拆分为多个小文件?

Google Cloud Data Fusion,如何在一个管道中将多个表加载到 bigquery

插入多个文本文件

使用 SSIS 脚本任务将数据从多个 SQL 表导出到不同的平面文件