Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSIS包-从多个源文件中获取一列_Ssis - Fatal编程技术网

SSIS包-从多个源文件中获取一列

SSIS包-从多个源文件中获取一列,ssis,Ssis,我正在尝试创建一个SSIS包,它可以接受转储到同一处理文件夹中的多个(已知)文件结构。我正试图从每个文件中提取AccountId 我遇到的问题是,我的数据流任务只适用于我为平面文件源设置的一个特定文件。在我的平面文件源代码中,我只提供AccountId列,但这似乎无法解决问题 当前SSIS包结构 Foreach循环:循环指定文件夹中的所有文件 数据流任务:处理每个文件并存储在SQL表中 示例CSV文件结构 文件1: Name | AccountId | Address | City | St

我正在尝试创建一个SSIS包,它可以接受转储到同一处理文件夹中的多个(已知)文件结构。我正试图从每个文件中提取
AccountId

我遇到的问题是,我的数据流任务只适用于我为平面文件源设置的一个特定文件。在我的平面文件源代码中,我只提供AccountId列,但这似乎无法解决问题

当前SSIS包结构

Foreach循环:循环指定文件夹中的所有文件

数据流任务:处理每个文件并存储在SQL表中

示例CSV文件结构

文件1:

Name | AccountId | Address | City | State
John | 154235    | 1234    | LA   | CA
Name | Address | City | State | AccountId | Phone
Kyle | 5825    | Test | KY    | 534534    | 555-555-5555
Name | Address | City | State | Email      | AccountId | Phone
Bob  | 52345   | Fake | WY    | t@test.com | 756313    | 444-444-4444
文件2:

Name | AccountId | Address | City | State
John | 154235    | 1234    | LA   | CA
Name | Address | City | State | AccountId | Phone
Kyle | 5825    | Test | KY    | 534534    | 555-555-5555
Name | Address | City | State | Email      | AccountId | Phone
Bob  | 52345   | Fake | WY    | t@test.com | 756313    | 444-444-4444
文件:

Name | AccountId | Address | City | State
John | 154235    | 1234    | LA   | CA
Name | Address | City | State | AccountId | Phone
Kyle | 5825    | Test | KY    | 534534    | 555-555-5555
Name | Address | City | State | Email      | AccountId | Phone
Bob  | 52345   | Fake | WY    | t@test.com | 756313    | 444-444-4444

平面文件源将使用连接管理器中定义的列的位置。它不会试图分别从每个文件的头中提取位置

如果您想创建一个可以处理列的不同位置的源,那么您可以购买一个可以处理此场景的组件,或者使用脚本组件编写自己的组件

下面是一个脚本组件的示例,它被设置为应该执行此任务的输出。您必须自己解决文件的解析问题,但这应该不会太难。只是别忘了为文件路径配置一个变量,并在Inputs和Outputs部分添加AccountId作为输出

public override void CreateNewOutputRows()
{
int colIdx=-1;
var text=File.ReadAllText(Variables.FilePath);//在脚本中设置/ReadOnlyVariables
变量行=解析文本(文本);
var firstRow=rows.FirstOrDefault().ToList();
//查找匹配行
对于(var i=0;i
问题是您想同时从多个源导入,还是想使用同一个源来处理多个文件格式?我想从多个源导入到一个只包含
AccountId
字段的表中。我从不同的第三方获得的源文件都将其文件转储到同一个文件夹中。