SSIS导入xls文件并在空行之后将其拆分为2

时间:2013-03-01 19:05:48

标签: ssis null split xls

我有一个excel文件,其中有大量数据由2个空行分隔。我需要将这2个数据集分成两个CSV文件。所以在SSIS数据流中我选择了“Excel Source”下一个“条件分割”和“平面文件目的地”。问题是如何设置拆分来完成这项工作?

Excel数据示例:

Server_name | PrimarySA | SecondarySA
srv1 | SA1 | SA1
srv2 | SA2 | SA2
srv3 | SA3 | SA3
空行| |
空行| |
srvA | SAa | SAA
srvB | SAb | SAB
srvC | SAc | SAC

1 个答案:

答案 0 :(得分: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.如果找到空行,请关闭第一个文件,打开一个新的输出文件并写入此文件。

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