0

2 つの空の行で区切られた一連のデータを含む Excel ファイルがあります。この 2 つのデータ セットを 2 つの CSV ファイルに分ける必要があります。そのため、SSIS データ フローでは、「条件付き分割」と「フラット ファイルの宛先」の次に「Excel ソース」を選択しました。質問は、仕事をするために分割を設定する方法ですか?

Excel データの例:

サーバー名 | プライマリSA | セカンダリ
SA srv1 | SA1 | SA1
srv2 | SA2 | SA2
srv3 | SA3 | SA3
空行 | | |
空の行 | | |
srvA | さぁ | SAa
srvB | SAb | SAb
srvC | SAc | SAc

4

1 に答える 1

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.2DFT1-データをロードします。ソース:XLファイル、宛先:ステージテーブル

2.3DFT2-ソース

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に書き込みます。空白行が見つかった場合は、最初のファイルを閉じ、新しい出力ファイルを開いて、このファイルに書き込みます。

これには、より多くのプログラミング知識が必要になりますが、複数の「空の行」を持つファイルを処理できます。この解決策が必要な場合(そして行き詰まった場合)は、お知らせください。私または他の誰かがあなたを助けます。

于 2013-03-01T20:14:15.717 に答える