0

我有一个完整的 CSV 文件,例如有 6 列:

Rec ID | Charge Category | Charge Type Category | Product Name | Account No | Cost 

我一直在运行 SSIS,这种情况没有问题。

但是,我们发现其中一个 CSV 文件使用的列少于我们的列,例如:

Rec ID | Charge Type Category | Product Name |Cost

我们如何使用“平面文件连接管理器”类型的连接不起作用来处理这个原因?!?!

还有其他我们需要探索的方法吗?

谢谢

4

1 回答 1

0

如果你只有这两种情况,你可以创建三个文件连接。使用第一个读取整行并仅处理标题。计算其中的列数并创建两个并行流 - 一个用于“短”格式,一个用于“长”格式,其中每个流使用不同的连接定义。

一个更复杂的选项是在数据流中的脚本转换中完成所有这些操作。让您的 CSV 文件逐行读取文件并将其传递给脚本,该脚本解析该行并将现有列值分配给定义的所有可能输出的子集。应以配置所有可能列的方式定义输出(类似于:SSIS split string

解决方案的主要部分是:

  1. 逐行读取文件的平面文件连接(将字段分隔符设置为不存在的组合,例如#$#)和

  2. 转换模式下的 Scipt 任务,具有单个输入 (FullLine) 并定义了所有可能的输出:

    在此处输入图像描述

在脚本中,您可以使用此处精美描述的概念:http: //dwbi1.wordpress.com/2011/02/27/ssis-importing-files-read-the-first-n-rows/

在写完所有这些之后,我刚刚意识到脚本任务源可能是最简单的方法,它与将所有可能的列定义为输出的想法相同。

于 2012-10-25T10:46:23.980 回答