-1

私の状態と私が考えている問題の説明

おそらく、私はこのイベントと LINUX の世界に慣れていないため、これは少し複雑すぎると思います。

  1. だから私は自分のPC(WINDOWS 7)にいるので、SQLベースのレポートサイトを作成する必要がありますが、必要なデータはまだOracleにありません.
  2. 別のコントローラー -> 別の PC (UNIX) からの多くのファイルからのデータを oracle sql で表示する必要があります。
  3. ファイルの形式は元は .gz ですが、物理的にその FILE FORMAT は次のようになります machinedump.log.gz05052012 (まだ .gz -> 内部は .log ですが、まだ .txt コンテンツです)

注: 接続しているコントローラ/パーソナル コンピュータには、ユーザー名、パスワード、およびポート番号があります。

各 .log.gz データ内には、次のようなデータがあります。

20120806_161944: 08.06 16:17:29.574 t_cm_03 C3011099140000 at_sts       =    0 
20120806_161944: 08.06 16:17:29.574 t_cm_03 C3011099140000 at_sts       =    1
20120806_161944: 08.06 16:17:29.574 t_cm_03 C3011099140000 at_sts       =    2
20120806_161944: 08.06 16:17:29.574 t_cm_03 C3011099140000 at_sts       =    3
20120806_161944: 08.06 16:17:29.574 t_cm_03 C3011099140000 at_sts       =    4 
20120806_161944: 08.06 16:17:29.574 t_cm_03 C3011099140000 at_sts       =    5
20120806_161944: 08.06 16:17:29.574 t_cm_03 C3011099140000 at_sts       =    6
20120806_161944: 08.06 16:17:29.574 t_cm_03 C3011099140000 at_sts       =    7

しかし、私が見るより大きな問題もあります: MACHINEDUMP.LOG.GZ ファイルは次のようなものです:

machinedump.log.gz05052012
machinedump.log.gz05062012
machinedump.log.gz05072012
machinedump.log.gz05082012
etc.

だからここに私の問題に対する質問と助けが必要です:

  1. これらのファイルの内容を単一のテーブルに格納する最良の方法は何ですか? それらの .LOG.GZ ファイルから単一のテーブルに?

  2. 1つ目の質問ですが、「日付」によるデータ取得を自動化することは可能でしょうか?現在の日付に一致するファイルがある場合、それらのデータを実行して目的のテーブルに保存しますか?

  3. 何をすべきか教えてくれる方法はありますか?

  4. また、皆さん、ここで深く勉強しなければならないことはありますか?

これらのデータを、少なくとも SQL (オラクルまたはより良い方法はありますか) と NETBEANS を使用して残りの作業を行うための便利で読みやすいレポートにする必要があります (これらは私が知っています)。

モデレーター

以前に失敗した質問を削除することはできますか? ありがとう...

4

1 に答える 1

1

使用している Oracle のバージョンはわかりません。これは、オラクルがリリースごとに武器庫に新しい機能を追加するため、重要です。次のソリューションは、11.0.1.7 (つまり、11gR1 の最後のパッチ リリース) 以降で機能します。以前のバージョンでは、より多くのラングリングが必要です。

でもまず:

この情報をテーブルに保存する必要がありますか? 1回読めば足りる?Oracle のようなリレーショナル データベースは、マシン ログの保存に最適ではないためです。MongoDB、Cassandra など、より適切な無料の (または無料っぽい) ドキュメント DB がたくさんあります。または、まさにそれを目的とした Splunk があります。

とにかく、データベース内のファイルを読み取る最初の方法は、ファイルに対して外部テーブルを作成することです。これは、データがテーブルスペースではなく OS ファイルにあることを除いて、通常のテーブルと同じです。11gR2 では、Oracle はpreprocessor句を導入しました。これにより、SELECT ステートメントの実行前に実行されるシェル スクリプトをテーブルに関連付けることができます。プリプロセッサ スクリプトを使用してファイルを解凍できるため、これは特にあなたの場合に関係があります。

したがって、基本的なワークフローは次のとおりです。

  1. GZ ファイルを 1 つのディレクトリに配置し、それを標準名のファイルに解凍するスクリプト。
  2. 標準名ファイルから読み取り、そのスクリプトを前処理スクリプトとして持つ外部テーブル
  3. 外部テーブルから選択してターゲット テーブルに書き込む INSERT ステートメント

これのより正確なバージョンでは、ビジネス ルールに関して指定したよりも詳細な情報が必要になりますが、自分で理解できるはずです。

外部テーブルの詳細については、 ドキュメント を参照してください。

プリプロセッサ スクリプトに関する Adrian Billington の優れた記事をここここで読んでください。

于 2013-05-15T08:28:11.447 に答える