0

既存の DTS ファイルを SQL 2005 サーバーでホストされている DTSX に変換する方法を見つけようとしています。

私の最初の試み (最初の DTS) で、私はすでに立ち往生しています。

私は、DTS を使用して物事がどのように行われるかを見たくはなく、新しい DTSX 技術に集中したいと考えています。

何をしなければならないか。

  • 入力ファイルが存在するかどうかを確認します。そうでない場合は終了します。(まだ完了していません)
  • 宛先テーブルの切り捨て
  • ファイルをDBにインポート
  • すべてが大丈夫だったかどうかを報告します。

ステップインポートファイルは、私が立ち往生している場所です。家番号と内線番号が 1 つの列にある固定列サイズのフラット tekst ファイルがあります。データベースには 2 つの列があります。

最初に派生列を試しましたが、(最初の) 数値部分を分割するためのチェックを見つけることができました。

正規表現の使用を検索するときに、SQL 2005 と互換性がない「スクリプト コンポーネント」について読みました。

別の可能性はありますか?

これは、2 つ目の質問です。SQL Server 2005 で SQL Server Data Tools (SSDT) を使用することは可能ですか。

4

1 に答える 1

0

あなたの前には仕事があります。派生列変換を使用する必要があるため、参照してください。データ ビューアーをデータフローに追加すると、フローを移動するデータと、SSIS がそこにあると見なすデータを確認できるようになります。

あなたの場合、文字列を操作する必要があります。DT_STR と DT_WSTR の 2 つの文字列データ型があります (VARCHAR と NVARCHAR など)。SSIS はデータ型に非常に特化しているため、キャスト操作を使用して 1 つの型を別の型に変換する必要がある場合があります。たとえば、(DT_WSTR, 50)Blah は、Blah 列の 50 文字を DT_WSTR に変換します。DT_STR タイプは、コード ページも認識する必要があります。たとえば、1252 のようなものです。

条件が真かどうかをチェックし、いずれかの結果を返すImmediate Ifの SSIS バージョンが必要になる可能性があります。 Blah==100?1:0 この結果は、列 Blahは 100 に等しく、他のすべてのレコードでは 0 です。これらの Immediate If ステートメントをネストして、次のステートメント内に入れたり、次のステートメント内に入れたりすることができます。

派生列ウィジェットで少なくとも 2 つの新しい列を作成する必要があります。1 つは数値用で、もう 1 つは後続の列です。だからここにあなたが望むことをするための1つの非常に苦痛な方法があります. 文字列関数を使用して、最初の文字が数字であるかどうかを確認し、それを返すか、返さないかのいずれかを行います。2 番目の文字などについても同じことを行います。

もちろん、これを行うためのより良い方法があると確信しています。ツールボックスは派生列ウィジェットの関数で構成されているため、それを使用する必要があります。(または、代わりに、この場合は SQL UPDATE ステートメントを使用してより適切に実行できます。これは、以下のデータ フローではなく、上記の制御フローで後続のタスクとして実行します。)

公正な警告: SSIS の SQL Server 2005 バージョンには、SQL Server の新しいバージョンで修正または改善された非常に多くの非常に多くのバグとフラストレーションがあります。SQL Server 2008 を使用するだけでも、多くの頭痛の種から解放されます。

于 2013-04-23T17:05:04.600 に答える