0

私は SQL を初めて使用し、クリーンアップが必要な大規模なデータベースを持っています。フォーマット方法は次のとおりです。各テーブルには、ID 番号を含む列と、そのような他の種類の情報を含む 2 番目の列があります。

  1. 名前: ID# 名前
  2. 電子メール: ID# 電子メール
  3. 電話: ID# 電話
  4. 備考: ID# 備考

これらすべてのテーブル (実際のデータベースには約 90 個あります) からの情報を表示するビューと、各「メモ」を取得して個々のコンポーネントに処理するコードがあります。メモは基本的に、他のすべての情報を組み合わせた寄せ集めであり、典型的なメモの読み方は次のとおりです。

名、姓、役職、電話 123-456-7890、電子メール abc@def.com

私が今持っているのは、ビュー内のすべてのメモ (〜 300 万) を反復処理し、各要素 (電話、電子メールなど) を識別するコードですが、これらの要素を取得して、他の要素のそれぞれの列に書き込む必要があります。データベース内のテーブル。テーブルに書き込めるようにビューに書き込めないことはわかっていますが、処理するメモが非常に多いため、これを見るための最善の戦略が何であるかわかりません。誰でも助けることができますか?

4

1 に答える 1

1

実際には、適切なトリガー (新しい Pg バージョン) または(古いバージョン)を定義すると、ビューに書き込むことができます。DO INSTEADRULE

ただし、この場合、新しいテーブルに変更したいビューからデータを抽出することをお勧めします ( UNLOGGEDPostgreSQL 9.1 以降を使用している場合)。UPDATE ... FROM次に、変更情報テーブルに対して結合する一連のステートメントを、更新するテーブルごとに 1 つずつ記述します。

それが実行できない場合、はるかに遅いが小さなチャンクで実行する方が適している別の方法は、ビューからいくつかの行を取得するか、ビューから作成された一時テーブルを更新する PL/PgSQL プロシージャを使用することです。関連するすべてのテーブルで、さらにいくつかの行を取得して繰り返します。

于 2013-07-20T05:23:37.907 に答える