0

クエリの結果に応じて、いくつかのファイルを RedHat Linux の「拒否された」ディレクトリに移動する方法を探しています。データベースは Oracle 11gr2 です。

4 つのファイルすべてが一度に処理されます。ファイルは FTP プロセスによって共有に配置され、スケジュールされた OEM ジョブが 15 分ごとに XML ファイルの存在をチェックします。

処理する XML ファイルがあることがわかると、それらをピックアップし、xmllint で検証して、ファイルを作業ディレクトリにコピーします。

そこからWHERE、クエリ内の句の結果に応じて、ファイルが外部テーブルにロードされます。

ファイルが失敗した場合、またはファイルに 1 つの不良レコードが含まれている場合、ファイルをrejectedフォルダーに移動することは、ロード プロセス中に行う必要がありますか?

私のテスト ケースには 4 つの XML ファイルがあります。

  • 1が正解です。
    • 問題なくロードされました。
  • 1 には 1 つの悪いレコードと 1 つの良いレコードがあります
    • 正しいレコードは適切にロードされ、偽のレコードは正しくロードされません。しかし、「悪い」ファイル全体をロードしないようにしたいのですが、オラクルにロードしなかった後、ファイルを「拒否された」フォルダに移動したいと思います。
  • 1 に XML エラーがあります
    • xmllint によって正しく拒否され、「拒否済み」フォルダーに移動されました。
  • 1 タグ内の値がありません。
    • 必須の値を満たしていないため、却下されました。

前もって感謝します!

4

1 に答える 1

0

XSDまたはDTDに対するXMLファイルの検証には、正規表現を含めることができます。XSD / DTDは実行時にメモリに読み込まれるため、テストケースが作業を完了するために、必要に応じて実際の正規表現を挿入できます。

詳細については、たとえば正規表現、xsdでのパターンマッチングを参照してください。

于 2012-12-18T13:33:05.790 に答える