2012-10-25 42 views
0

我有一个完整的CSV文件例如有6列:如何处理SSIS中更改列数的CSV文件?

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

我一直在运行SSIS这一条件没有问题。

然而,我们发现,使用更少的列CSV文件的一个比我们有例如:

Rec ID | Charge Type Category | Product Name |Cost 

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

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

谢谢

回答

0

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

稍微复杂一点的选择是在数据流的脚本转换中完成所有这些。让您的CSV文件逐行读取一个文件并将其传递给脚本,该脚本解析行并将现有列值分配给定义的所有可能输出的子集。 (:SSIS split string与此类似)

溶液的主要部分包括:

  1. 平面文件连接,其通过读取文件线路输出应在所有可能的列配置成这样的方式来定义线(设置字段分隔符来例如#$#的一个不存在的组合)和

  2. 素文字任务在变换模式与具有单个输入(FullLine)和所有可能的输出定义为:

    enter image description here

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

写这一切之后,我刚刚意识到脚本任务源很可能是做的最简单方法,将所有可能的列定义为输出的概念相同。

+0

不幸的是,我们需要处理列数的方差。这是否意味着我们需要在脚本任务中完成呢? – dcpartners

+0

答案随第二段扩大。 – milivojeviCH

+0

您是否将此作为Script Component引用,但是您选择了Transformation选项?是不是你需要指向一个文件,那就是我们遇到的问题......记住它是一个动态数量的列(以CSV格式)。 – dcpartners