2013-03-01 64 views
0

我有一个excel文件,其中有一堆数据由2个空行分隔。我需要将这2个数据集分成两个CSV文件。因此,在SSIS数据流中,我选择了“条件拆分”和“平面文件目标”中的“Excel来源”。问题是如何设置拆分来完成这项工作?SSIS导入xls文件并将其拆分为2,空行后

Excel中的数据例如:

服务器名称| PrimarySA | SecondarySA
srv1 | SA1 | SA1
srv2 | SA2 | SA2
srv3 | SA3 | SA3
空行| |
空行| |
srvA | SAa | SAa
srvB | SAb | SAb
srvC | SAc | SAC

回答

0

解决方案1:

1.1创建阶段表:

CREATE TABLE [dbo].[Stage] 
(
    [RowID] [int] IDENTITY(1,1) NOT NULL, 
    [Server_name ] [varchar](50) NULL, 
    [PrimarySA ] [varchar](50) NULL, 
    [SecondarySA ] [varchar](50) NULL 
) ON [PRIMARY] 

2.2 DFT1 - 加载该数据。来源:XL文件,目标:第一阶段表

2.3 DFT2 - 源

SELECT [RowID] 
     ,[Server_name ] 
     ,[ PrimarySA ] 
     ,[ SecondarySA ] 
FROM [dbo].[Stage] 
WHERE 
    RowID < (SELECT MIN (RowID) 
      FROM [dbo].[Stage] where [Server_name ] = 'empty row ' 
      ) 

Destination: A new flat file File1 

2.4 DFT 3: 来源:

SELECT [RowID] 
     ,[Server_name ] 
     ,[ PrimarySA ] 
     ,[ SecondarySA ] 
FROM [dbo].[Stage] 
WHERE RowID > (SELECT MAX (RowID) from [dbo].[Stage] where [Server_name ] = 'empty row ') 

Destination: Another flat file - File2 

解决方案2:做一个脚本任务。阅读每一行,检查行的长度或内容。如果找不到空行,请写入文件1.如果找到空行,关闭第一个文件,打开一个新的输出文件并写入该文件。

这将需要更多的编程知识,但将能够处理具有多个“空行”的文件。如果您需要此解决方案(并卡住),请告诉我们;我或其他人会帮助你。

+0

感谢您的建议。正如您在解决方案2中提到的那样,我正在开发小型脚本任务。我将很快分享代码。 – Mario 2013-04-08 10:35:07

+0

当然。我会很乐意帮助你。 – 2013-04-09 21:00:17