0

私が働いている会社には、ソースデータがフラットファイルまたはExcelワークブックとして作成されているシステムがたくさんあります。これらのファイルは、DTSを使用してSQLServerデータベースにインポートされます。

多くの場合、これらのファイルにはさまざまな制御文字が含まれています(たとえば、SAPがデータを埋めるのが好きなレコードが含まれていることを確認するために、1時間費やしました\0)。理想的には、データベースに入る前に削除したいと思います。

私はDTS/SSISをそれほど頻繁に使用していませんが、すでに何かが含まれている必要があると思いました。少なくとも、消毒のベストプラクティスを使用する必要がありますか?

多くの輸入品にわたってこれを繰り返し可能な方法で行う方法についてのアイデアをいただければ幸いです。

4

3 に答える 3

1

私はSSISでの経験からしか話すことができないので、これがほんのわずかしか役に立たない場合はお詫び申し上げます。

一般的な衛生状態に関しては、私はこの仕事のためのいかなる種類の目的構築コンポーネントにも出くわしていません。これは、シナリオごとに「不良データ」の定義が大きく異なる可能性があるという考えによるものだと思いますが、おそらく、印刷できない文字を取り除くなどのことが一般的なビジネス要件である可能性があるため、これはやや意外です。

当然、派生列変換、またはより複雑なケースではスクリプトコンポーネントにいつでもフォールバックできますが、これらによってパッケージ間でのロジックの複製が簡単になることはほとんどありません。CozyRocコンポーネントを使用して、パッケージ間で共有できるスクリプトを作成した場合もありますが、そもそもこれらのコンポーネントに実際にアクセスする必要があることに加えて、必要になるたびに一定レベルのセットアップが必要になります。機能。

したがって、このような場合、私は個人的に、一般的な衛生ルーチンをカスタムデータフローコンポーネントに統合することが最善の選択肢であると感じています。いくつかの非常に一般的なデータ検証ロジックを処理するために独自に開発し、チェックボックスを選択して特定の列に適用したいチェックを有効にできるようにコンポーネントエディターを設定しました。次に、ドラッグアンドドロップとデータフローの配線の問題になります。少なくとも私たちにとっては、コンポーネントの開発に時間をかけることは間違いなく価値がありました。

この点でDTSが何を提供するのかわかりません(かなり制限されているか、少なくとも友好的ではないと思いますが、間違っている可能性があります)。したがって、これはレガシーパッケージには役立たない可能性があります。その場合、入力データに対して実行可能であると仮定すると、Cadeのソリューションはおそらく最もストレスのないものになると思います。

一般的なSSISの洞察に関する限り、Jamie Thomsonのブログ(以前はここ)が非常に役立つことがわかったので、彼がこの特定のトピックについて以前に議論したかどうかを確認することをお勧めします。

いずれにせよ、うまくいけば、これは少なくとも少し役に立ち、解決策を考え出すのに幸運がありました。

補足:データベースにデータを貼り付ける前にデータをサニタイズしたいという称賛。データをクリーンアップしたことのない特定のベンダーからデータを取得し、それをXMLに変換して、Webサービス経由で送信しようとします。言うまでもなく、XMLパーサーは印刷できない文字をあまり好きではありません。

于 2010-06-28T16:30:47.447 に答える
0

特定の文字を常に単純に置換/削除できる場合は、通常、この事前インポートをカスタムCプログラムで処理します。これは明らかに、バイナリファイルや可変長列長インジケータ列やEBCDICなどのあるものでは機能しませんが、使用できる場合は、インポートツールに関係なく適用できます。

于 2010-06-28T13:18:14.270 に答える
0

必要に応じて、次のこともできます。

  1. データを(SSIS / DTSを介して)DBの「ステージング」テーブルにインポートします
  2. DBに「sanitize」テーブルを作成します。このテーブルには、削除する(または他の文字列に置き換える)文字列が(行ごとに)含まれています。もちろん、このテーブルには、さまざまなシナリオの追加の列を含めることができます
  3. カーソルを使用してテーブルをステップスルーし、サニタイズします。
于 2010-07-14T13:17:56.550 に答える