数百万行の大きな CSV ファイルを SQLite にインポートして、ログ ファイルを解析および分析しようとしています。
私は.NETプログラムを使用して、データベースなしでLINQを介して小さなログファイルで同じことを達成していました。
しかし、パフォーマンスとスケーラビリティの問題に直面していました。
その後、.NET プログラムからパフォーマンスの問題を取り除くには、SQLite が最適なオプションである可能性があることがわかりました。SQLite コマンド ラインから次のコマンドを使用して、ログ ファイルをインポートしました。
(不要な情報を提供することを避けるために、名前は置き換えられます):
sqlite> Create Table MLogTable(DateTimeC text, Field1 text, Field2 text, Field3 text, Field4 text, Field5 text, Field6 text, Field7 text, Field8 text, Field9 text, Field10 text);
sqlite> .separator ","
sqlite> .import "D:\\logs\\xyz\\abc.log" MLogTable
ログ メカニズムに問題があるようで、ログ ファイルに不完全な行がいくつかあります。例えば:
予想される形式は (f1、f2、f3 f4、f5、f6、f7、f8、f9、f10、f11) です。
しかし、数行の実際の形式は (f1, f2) です
そのため、ログ ファイルには数百万行のうちの数行しか含まれておらず、インポート時に次のようなエラーが発生します。
エラー: D:\logs\xyz\abc.log 行 4499214: 11 列のデータが必要ですが、2 列が見つかりました
誤った行の数は非常に少なく、ログ中に修正する方法を制御できません。
そのため、SQLite のインポートが完了する間、これらの行は無視する必要があります。
SQLiteで可能ですか?