【问题标题】:Importing badly formed CSV into SQLite将格式错误的 CSV 导入 SQLite
【发布时间】:2013-01-21 06:26:49
【问题描述】:

我正在尝试通过将一些包含数百万行的大型 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 可以吗?

【问题讨论】:

  • 第 4499214 行是什么?
  • 只有 2 个值而不是 11 个。例如:预期是 (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11) 但实际是 (f1, f2 )

标签: sqlite sqlite-shell


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-02-03
    • 2015-09-23
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 2011-05-20
    相关资源
    最近更新 更多