2013-03-01 42 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