2

データインポートプロセスの一環として、テキストを「マッサージ」して特定の標準に準拠させる必要があります。このプロセスでは、リモートサーバーからXMLファイルをダウンロードし、データを「作業」テーブルに挿入して処理してから、データを「作業」テーブルからライブテーブルに移動します。

適切な例として、斜めの引用文字(')を、まっすぐな引用文字(')に置き換えたい場合があります。

また、これをかなり簡単に拡張できるようにしたいと考えています。新しい置換/削除を追加する必要がある場合は、インポートプロセスプロジェクトの再構築は必要ありません。

私たちのチームには2つの考え方があります。

  1. コードでマッサージを実行します。置き換え/削除したいさまざまな文字を含むXMLファイルをプロジェクトに用意します。新しい置換/削除を追加する必要があるときはいつでも、ファイルを更新できます。

  2. SQLでマッサージを実行します。「作業中」のテーブルから「ライブ」テーブルにデータを転送するときは、いつでも編集できる置換/削除を実行するSQL関数を介して各フィールドを実行します。

一方の方法はもう一方の方法よりも「優れている」のでしょうか。SQLメソッドは高速になりますか?SQLでは困難/不可能なコードで、より簡単に、またはまったく実行できる特定のことがありますか?

前もって感謝します。

4

3 に答える 3

1

これは古典的なETL要件です。SSISを確認することをお勧めします(MS SQLを使用している場合)。SQLの関数/ストアドプロシージャを使用してほとんどのことを実現できますが、できないいくつかのことについてはCLRコードを呼び出すことができます。

于 2012-12-07T22:40:24.977 に答える
1

データが多い場合は、SQLの使用を検討します。これは、入力データと、より一般的な置換またはクリーニング機能を理解すれば、このアプローチを最適化してより効率的にスケーリングできるためです。コードでマッサージを実行する場合は、データ量の増加に伴って実行にかかる時間が増加する置換に対して、ほぼ確実に反復的なアプローチをとる必要があります。

処理するデータの量が十分に少なく、パフォーマンスが問題にならない場合は、コードでクリーニングを実行すると、柔軟性が向上する可能性があります。

于 2012-12-07T22:44:43.703 に答える
0

これはストアドプロシージャで実行できるため、SQLでマッサージを実行します。変更を加える必要がある場合、ストアドプロシージャの更新には、スクリプトを実行するだけで済みます。

コードでデータをマッサージする場合は、変更を加えるためにビルドとデプロイを実行する必要があります。スクリプトを実行するよりもはるかにコストがかかります。

何がより簡単またはより効率的であるかという点では、それはすべてデータとコード品質に依存します。

考慮すべきもう1つのオプションは、コードとファイル変換ファイルの組み合わせであるXSLTを使用することです。

于 2012-12-07T22:32:18.633 に答える