1

我正在尝试通过将一些包含数百万行的大型 CSV 文件导入 SQLite 来解析和分析日志文件。
我正在使用我的 .NET 程序通过 LINQ 在较小的日志文件上实现相同的操作,而无需任何数据库。
但我面临着性能和可扩展性问题。
然后我发现 SQLite 可能是从我的 .NET 程序中卸载性能问题的最佳选择。我使用 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可以吗?

4

1 回答 1

2

命令行工具的 CSV 导入功能sqlite3仅适用于格式良好的 CSV 文件。

您必须手动转换文件,或编写自己的导入器。

于 2013-01-21T10:48:59.653 回答