如何最好地将多个文本文件导入SQLite FTS虚拟表?

时间:2014-07-02 21:05:03

标签: sqlite full-text-search fts3

我有多个文本文件要导入SQLite中的虚拟FTS表。文档here提到将来自安然电子邮件数据集的~500,000个文件插入到单个表中。

我不明白这是怎么做的。

Oreilly here说只使用INSERT,UPDATE,DELETE,但我不清楚如何以这种方式从多个外部文件中获取内容。

是一个外部脚本,使用.insert以最好的方式从命令行调用SQLite吗?

如果是这样,我如何防止文件中的任意文本被解释为新列?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

使用这样的普通INSERT语句进行插入:

INSERT INTO enrondata(content) VALUES('From: georgeanne.hodges@enron.com
To: energy.dl-ga-all_ubsw@enron.com
Subject: Expense Reports
Date: Tue, 5 Feb 2002 09:06:41 -0800 (PST)

In anticipation of the imminent closing of the UBSW Energy transaction, please have all outstanding employee expenses in your possession filed through Enron''s XMS system as soon as possible.
...');

您必须使用一些脚本将电子邮件转换为有效的SQL命令,即复制所有引号('),并在文件周围添加INSERT语句。内容。

或者,使用一些脚本来读取所有数据并直接插入;例如,在Python中:

import sqlite3
db = sqlite3.connect("enron.db")
cursor = db.cursor()
cursor.execute("CREATE TABLE ...")
for each mail ...:
    content = ...
    cursor.execute("INSERT INTO enrondata(content) VALUES(?)", [content])
cursor.close()
db.commit()
db.close()