2012-07-19 30 views
0

我想加载一个混合多个数据集的平面文件。平面文件看起来像。将具有多个布局的平面文件解析为多个目标表?

 
1999XX9999 
2XXX99 
1999XX9999 
2XXX99 
3XXXXX999.99 
1999XX9999 

每行的第一个字符定义了行的记录类型。我想在数据流中创建一个脚本组件并解析原始行(如下所示),并将三个输出(1,2,3)保存到三个不同的表中。可能吗?

 
Table1(col1, col2, col3): 
999, XX, 9999 
999, XX, 9999 
999, XX, 9999 

Table2(col1, col2): 
XXX, 99 
XXX, 99 

Table3(col1, col2): 
XXXXX, 999.99 

如果脚本组件不能执行它,SSIS中的任何其他方式?最好的解决方案是编写一个程序将文件分成三个文件并使用SSIS加载它们?

+0

您是否需要知道第二行是否与第一行一起出现,或者是否真的是三个独立文件交错在一个物理文件中? – billinkc 2012-07-20 20:36:56

+0

@billinkc是的,面对他们通常是一对多的关系。 – ca9163d9 2012-07-22 03:06:00

回答

2

这是可能的,你可能应该使用脚本转换来创建可维护的解决方案。

您将无法使用平面文件源和连接管理器将输入文件完全解析为列。阅读你的线条已满,并在脚本转换中使用字符串函数将每行解析到所需的列中。

我们记录分发到不同的目的地,您可以:

  1. 你的转型定义多个输出并使用在每一行的第一个字符的条件来确定输出到您发送的列。
  2. 只能使用脚本转换将行解析为列,并使用Conditional Split Transformation将记录在逻辑上划分为多个数据路径。

这两种方法在逻辑上相似,实现方式不同。