1

我有 24,888 条记录进入带有 FTS 索引的 SQLite 表。我使用 .import 从一组带有逗号分隔符的 .csv 文件中加载表。

平台是 Linux - CentOS 6.2,SQLite 3.6.20 作为此发行版中支持的版本。

这一直在使用 FTS 3 构建搜索系统 - 使用 Apache 和 PHP。

为了获得 FTS 4 功能——我需要的统计信息——我最近手动更新到 SQLite 3.7.13——最新的。

不幸的是,现在当我从 .csv 导入时——无论是到 FTS 3 还是 FTS 4 表,我丢失了超过一半的行/记录——我只得到 12,224 而不是 24,888。

导入期间没有报告错误。

数据中的最后一列是大量(在某些记录中)文本 - 在少数情况下高达 200K - 300K。文本中仍有一些字符,例如双引号或 m-dash 或 n-dash。

.immport 代码是否有可能看起来像文件结尾?

字数统计实用程序“wc -l”查看所有 24,888 行。

最后一点,.csv 文件是使用在 Linux 系统上运行的 Python 2.6.6 创建的,并且任何原始换行符都被转义(到 ||),所以我相信它们具有统一的回车控制/换行符。也许我错过了一些 SQLite 3.6 忽略但 3.7 看到的换行符或回车符?

我真的需要额外的 FTS 4 功能(主要是使用 matchinfo 报告有关搜索结果的统计信息),但如果我无法加载所有数据,那就不好了!

谢谢,劳伦斯·布雷瓦德加利福尼亚州圣何塞

[keywords2@keywords2c6x64 grant-import-tools]$ /usr/local/bin/sqlite3.7 --version
3.7.13 2012-06-11 02:05:22 f5b5a13f7394dc143aa136f1d4faba6839eaa6dc

[keywords2@keywords2c6x64 grant-import-tools]$ /usr/bin/sqlite3 --version
3.6.20

[keywords2@keywords2c6x64 grant-import-tools]$ uname -a
Linux keywords2c6x64 2.6.32-220.23.1.el6.x86_64 #1 SMP Mon Jun 18 18:58:52 BST 2012 x86_64 x86_64 x86_64 GNU/Linux

[keywords2@keywords2c6x64 grant-import-tools]$ cat /etc/redhat-release 
CentOS release 6.2 (Final)
4

2 回答 2

1

我修好了我的。

显然,双引号现在对逗号分隔的文件有不同的处理方式。我在原始来源中将它们转义为两个单引号。之后,我的所有线路都毫无问题地导入。

似乎一旦字段中有双引号,直到下一个双引号的所有内容都被视为单个字段。我猜。

从 3.7.7 到 3.7.12,这绝对是不同的行为。

于 2012-09-11T23:28:21.493 回答
0

我可以确认相同的体验 - 当导入大型 CSV(约 700 万行)时,3.7 丢失了大约 100 万行,而 3.6 没有

于 2012-09-10T22:17:54.850 回答