【问题标题】:how to load specific column with multiple files in ssis如何在ssis中加载具有多个文件的特定列
【发布时间】:2019-08-27 06:00:50
【问题描述】:

如何使用 ssis 包仅将多个文件中的 idname 列加载到 sql server 中?

每个文件都有不同的结构,但是这两个必需的列在所有文件中都可用。每个文件的列顺序不同。

源文件文件夹是:D:\SourceFolder

文件如下:

File1 Name : Emp_20190102
Emp_20190102 File data :
id,sal,deptno,name
1,100,10,h

File2 Name : Emp_20190102_1
Emp_20190102_1 File data :
id,name,sal
11,ac,101

File3 Name : Emp_20190102_2
Emp_20190102_2 FIle Data 
id,sal,name,deptno,loc
3,200,y,30,che
File4 Name : Emp20190102
Emp20190102 FIle Data:
id,sal,deptno,dname,flag,name
10,400,40,hr,1,un

这里我只想将id和name列信息加载到sql server表中。 sql表结构:

CREATE TABLE [dbo].[Emp](
    [id] [int] NULL,
    [name] [varchar](50) NULL
)

基于以上 4 个文件,我想在 emp 表中加载数据

id |Name
1  |h
11 |ac
3  |y
10 |un

这是我尝试过的:

step1 : 为文件夹名和文件名创建了 2 个变量 文件位置:D:\SourceFolder 文件名:Emp_20190102_1.txt

然后拖放 foreachloop 容器并选择 typeofenumerator : foreach fileenumerator 和变量映射:文件名变量 并在里面拖放平面文件源并配置源文件 之后为平面文件连接创建动态连接 然后拖放 oledb 目的地并进行配置

执行包后我得到不正确的结果。 这里我们应该只使用一个数据流任务来加载所有文件

你能告诉我如何在 ssis 中实现一个包来完成这个任务吗?

【问题讨论】:

标签: ssis ssis-2012


【解决方案1】:

您不能对循环中的单个数据流执行此操作。由于所有文件都有不同的结构,因此您必须为每个文件创建单独的数据流。

这是因为必须在设计时设置数据流的元数据。它不能是动态的。此外,对于平面文件源,您不能像使用 OLEDB 源一样仅选择源中所需的列。

您能够使用单个数据流执行此操作的唯一方法是,如果所有文件都具有完全相同的列且顺序完全相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多