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