2

背景: 私のチームには、集計テーブルを更新する etl ジョブがあります。各行には特定の日付のデータが含まれますが、この行は行の日付の後に更新される可能性があり、更新されます (つまり、どの行にも複数のジョブからのデータを含めることができます)。この ETL ジョブは、先週 1 日の一部のデータを欠落しており、今は埋め戻す必要があります。

問題: 不足しているデータがあり、計画していたのは、そのデータを一時テーブルにダンプしてから、集計テーブルとマージすることでした。そうすれば、ETL ジョブにそのデータの行が既に含まれているかどうか (更新)、または新しい行を追加する必要があるかどうか (挿入) を処理できますが、一時テーブルを作成するための十分な権限がありません。 d DBA を関与させたくない。

質問: 一時テーブルを作成せずに挿入/更新のような動作を実行できますか (ちなみにこれは Oracle SQL です)。

編集: データは tsv ファイルからのものです。

4

1 に答える 1

2

なぜDBAの関与を避けたいのですか? DBA は、データベース内のデータの状態に最終的な責任を負うため、データベースで何が起こっているかを完全に把握している必要があります。したがって、彼らと卑劣なコマンドをプレイするべきではありません。

欠落データのファイルがある場合、それをデータベースに提示する最も簡単な方法は、外部テーブルを使用することです。これには、テーブルとおそらくディレクトリ オブジェクトの作成も必要です。このタスクには、DBA の助けが必要です。

データベース オブジェクトの作成を回避する唯一の方法は、TSV ファイルを一連の DML ステートメントに変換することです。ここでは、正規表現および/またはレコード マクロをサポートする IDE が非常に役立ちます。私はTextPadが好きです。他のエディタが利用可能です。

Oracle でアップサートを行うための DML ステートメントはMERGE ステートメントです。あなたが注意する必要がある1つのことは、最新性です。欠落しているデータは先週のものです。行が存在する場合、その間に追加または修正された可能性があります。最新のデータを古いデータで上書きしないように、MERGE ステートメントを作成する必要があります。テーブルに DATE_CREATED や LAST_UPDATED などの便利なメタデータ列があることを願っています。

于 2012-05-09T08:44:34.630 に答える