2016-08-26 10 views
1

新しいデータファイルをデータベースに読み込むプロセスを自動化する必要があります。私の質問は、自動化された方法でどのファイルが「新」であるかを判断する最良の方法です。ETLファイルの読み込み:今日作成されたファイルまたは既に読み込まれていないファイル?

ファイルは夜間に同期されるディレクトリから取得されるため、ファイルのリストは増え続けます。私はすでに検索したファイルを一掃するオプションはありません。

新しいレコードは、各レコードの元のファイル名を示すフィールドを持つ生データテーブルに格納されています。そのため、現在ディレクトリ内にあるすべてのファイル名を、生データテーブルにあるファイル名と比較し、共通していません。

または、ファイル名にあるタイムスタンプを使用して、インポート処理が最後に実行されてから作成されたファイルのみを処理できます。

エラーが発生しにくいので、最初のアプローチを使用する傾向にありますが、これが本当に真であるかどうかを確認することはあまりありませんでした。すべてのファイル名と既にデータベースに入っているファイル名を比較することによって、この方法で新しいファイルを判断するという落とし穴は何ですか?

答えて

1

ファイル名の比較:あなたは数百万のファイルを持っている場合は

  • は、比較はあなたが 何探していない可能性があります。
  • 上記のフォルダ内のファイルが決して を削除しないようにする必要があります。

日付でファイル名を取得します。

  • これらのファイル名は、日が 正確性を保証することができ、一度取得されているので。 (たとえミリ秒差で作成されても)
  • 多くのファイルがある場合は効率的です。
  • Pentahoは、作成日ではなく修正日を返します。

上記のいずれかを実行するには、次のPentaho手順を使用します。

file names

フィギュレーションファイル名のステップゲット:

  • ファイル/ディレクトリ:フォルダパスは、ファイルが含まれて付けを。

  • ワイルドカード(正規表現):.*\.*全部または.*\.pdfが特定
    フォーマットを取得するために取得します。

+0

これは私が考えていた賛否両論でした。ファイル名の比較では、通常、1日に1つのファイルしか受け取らないので効率は問題ではないと思います。 ファイルがフォルダから削除される可能性も考えましたが、フォルダ内のファイル名とデータベース内のファイル名を比較するために左結合(Pentaho Merge Join Left Outer)を使用すると、問題である。 – CGritton

+0

はい、それも比較しても大丈夫です。古いファイル名をすべて読み込んで比較するのではなく、新しいファイルのみを削除して取得し、日付を比較したり取得したりするのは良い方法です。 –

関連する問題