私はデータベースを持っていますが、それはそれほど高速ではなく、約65000行の大きなCSVを持っています。これらの存在をクロスチェックし、必要に応じてデータベースを更新する必要があります。
- CSVには、データベースIDを含む列があります。それは常に1:1の関係です。
- CSVはデータベースへの新しい入力を保持する可能性があるため、データベースのDBエントリがない場合があります。
- 速度が遅すぎるため、CSVをループして各行を確認できません。
- 最初にデータベースからすべての結果を取得し、それらを毎回ループするように保存しても、大量のRAMが必要になるため、機能しません。
どうすれば次のことができますか?
- CSVの行にデータベースエントリがあるかどうかを確認します。その場合は、別のCSVファイルに書き込みます。
- 行にデータベースエントリがない場合は、別のファイルに書き込みます。
- タイムスパンを5分以内、できればもっと短くしてください。
CSVには多数の列(たとえば70)がありますが、IDをクロスチェックするために必要なのは列5だけです。最初にCSVファイルをループしてからデータベースで確認しようとしましたが、速度が遅すぎます。10分以上かかる場合があります。また、データベースからすべてのエントリを取得し、それらをループしようとしました。ループを使用して、CSVを(を使用してBufferedStream
)実行し、チェックします。これにより、時間が大幅に短縮されますが(最大5分)、データベースに存在しないエントリを記録することはできません。
速度を上げながらこれを行う方法はありますか?