2

私がする必要があるのは、2 つのデータベース間のデータです。ソースは何でも (カンマ区切りファイル、xls ファイル、任意のデータベースなど)、宛先は MS SQL Server です。

すべてのデータを同期する必要はありません。特定のテーブルを同期するだけで済みます。

例:

アカウンティング ソフトウェア (PostgreSQL で実行) CUSTOMERS テーブルを CRM (SQL Server で実行) と同期する必要があります。

このツールが直面する可能性があるいくつかの問題:

1) 会計ソフトウェアの顧客テーブルには、crm の顧客テーブルにマッピングされていないフィールドが 1 つあります。(このようにして、この追加フィールドをフィールド CUSTOMERS_CUSTOM_DATA.EXTRA_FIELD にマップしたい)

2) いくつかのルールを設定する (コードが 10000 から 99999 の間の顧客のみを同期するなど)

3) いくつかの挿入後のタスクを実行できるようにする (たとえば、タンブル ID に手動で管理されたシーケンスを使用しているため、10 レコードを挿入した後、シーケンスに 10 を追加する必要があります)

4) 例外処理メカニズムを備えているため、何か問題が発生した場合は、SQL Server ストアド プロシージャ (既に持っていて、電子メールが送信されます) を呼び出したり、単純にメッセージを送信して、何か問題が発生したことを通知したりできます。夜の同期。

5) データ同期を実行するタイミングを簡単にスケジュールできるようにする (毎時、毎日、手動を含む)

6) データ変換を実行します。ソース テーブルの姓フィールドが varchar(20) で、宛先テーブルが varchar(15) の場合、明示的に「切り捨てを実行する」と言いたいです。

7) 挿入または更新のルールが異なります。たとえば、送信元の電子メール フィールドには存在しませんが、送信先に入力したいので、更新ではなく挿入のみでこの操作を実行することにしました。(たとえば、新しい顧客を挿入するときに、名前と姓を連結した電子メール フィールドに入力したいが、ユーザーがそれを変更できるようにしたい。この最初の挿入はデータ入力を単純化するためのものですが、この特定のケースでは手動で処理されます. だから私は言いたいです (挿入時に電子メールフィールドに入力し、更新時に電子メールフィールドで何もしません)

8) ソース データベースでの削除の場合、宛先では削除せず、varchar(10) STATUS を DELETED に変更するだけです。

注: Integration Services がこれに最適であることはわかっていますが、Express Edition をサポートする必要があるため、SSIS はオプションではありません。

現在必要なことを実行する一連のスクリプトとスケジュールされたストアド プロシージャを作成しましたが、維持するのが非常に難しく、GUI がまったくないため、作業がはるかに遅くなります。以前にTALENDを見たのを覚えています。おそらく、そのツールも私が必要としている回答であると思います。いずれにせよ、経営陣に迅速な回答を提供する必要があるため、市場に出回っているすべてのツールを調査する時間はありません。専門家からの提案。

4

2 に答える 2

1

最後に、私は TALEND に行きました。SSIS を実際に使用したことはなく、SQL Server カンファレンスでライブ デモを見ただけです。いずれにせよ、Talend は SSIS に代わる無料の (そして非常にリッチな) ものであるため、SQL Server Express を使用している顧客 (95%) を含むすべての顧客のニーズに適合します。

于 2011-05-17T07:08:41.093 に答える
1

私は、SQL Server Integration Services がそれをすべて行っていると信じています。また、SQL Server Management Studio を使用すると、SSIS ジョブを作成およびパッケージ化して、別の場所にデプロイできると思います。

于 2011-05-16T19:16:19.157 に答える