2

私たちは現在、Spoon ジョブを開始するたびにデータベース スキーマが変更されたかどうかを確認する必要があるプロジェクトに取り組んでいます。これは、オリジンがサード パーティのデータベースであり、ほとんどまたはまったく制御できないためです。

最も明白な解決策は、apgdiffなどのツールを呼び出すスクリプトを作成し、スキーマを以前に生成されたスキーマ ファイルと比較することです。変更があった場合は、通知を送信します。

問題は基本的に次のとおりです。これはこれを達成するための最良の方法ですか?

どんな助けでも大歓迎です。

御時間ありがとうございます。

PS: Stackoverflow がこの種の質問に最適な場所であるかどうかはわかりません。そうでない場合は、お気軽に興味深いフォーラムを提案してください。

4

1 に答える 1

1

解決策 I: 参照している PostgreSQL データベースであると仮定すると、十分な権限を持っている場合はINFORMATION_SCHEMA、次のようにデータベースにクエリを実行することをお勧めします。

select column_name, data_type, character_maximum_length
from INFORMATION_SCHEMA.COLUMNS where table_name = '<name of table>';

あなたが述べたように、期待される結果を永続的な方法で保存し、サブトランスフォーメーションで結果を比較するだけです。永続的なスキーマは、次のような定義を格納する CSV ファイルである可能性があります。

app_id           character varying           255                      
platform         character varying           255                      
etl_tstamp       timestamp without time zone (null)                   
collector_tstamp timestamp without time zone (null)                   
dvce_tstamp      timestamp without time zone (null)                   
event            character varying           128                      
event_id         character                   36                       

次に、(1) 期待されるスキーマ定義を保持するファイルと、(2) データベースから新しく生成したファイルの 2 つのファイルを単純に比較します。これを行うには、ファイル比較ステップを使用できます。

例 - PDI

これが少し役立つことを願っています。

編集:

ソリューション II: 適用できる別のソリューション:テーブル比較ステップ (www.kjube.de による寄稿) を使用して、異なるソースからの 2 つのテーブルを比較することもできます。

このステップの優れている点は、比較する 2 つのテーブルに対して 2 つの異なる接続を指定できることです。

于 2015-08-28T15:51:59.597 に答える