将文本文件中的内容加载到sqlite表中?

时间:2013-03-10 01:31:26

标签: sqlite

我有简单的文本文件,只包含普通文本。

我想知道是否有办法将文本内容加载到sqlite中的表。

所以也许我可以创建表myTable(nameOfText TEXT,内容TEXT);

然后将文本名称放入第一列,将内容放入第二列。

如果输入文件的名称很难,将内容加载到一个列表中就可以了。

任何建议都将不胜感激。

谢谢!

3 个答案:

答案 0 :(得分:20)

假设您有CSV格式的文件text.txt:

name1,content1
name2,content2

尝试以下命令将test.txt中的数据导入表格

D:\test>sqlite3 test.db
SQLite version 3.6.23
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table myTable(nameOfText TEXT, contents TEXT);
sqlite> .separator ","
sqlite> .import test.txt myTable
sqlite> select * from myTable;
name1,content1
name2,content2
sqlite>

在导入数据之前,使用 .separator 命令更改文本文件中使用的分隔符。

答案 1 :(得分:2)

termsql是一个工具,可以将文件或文件输出(stdin)中的文本即时转换为sqlite数据库。

termsql -c nameOfText,contents -i input.txt -o myDB.db 

这将创建一个包含nameOfText和contents列的表。对于input.txt中的每一行 将在myDB.db中插入一行。

您没有告诉我们有关分隔符nameOfText和上下文的分隔符。通过 默认termsql假定空格是分隔符。但它应该是','例如, 然后你会做这样的事情:

termsql -d ',' -c nameOfText,contents -i input.txt -o myDB.db

你可以在这里获得termsql: https://gitorious.org/termsql https://freecode.com/projects/termsql

Termsql也有其他用例。您可以在一个命令中对新数据库执行SQL语句。 以下示例将创建数据库并在命令行上返回nameOfText列,其中所有行的内容列包含字符串' test'。

termsql -d ',' -c nameOfText,contents -i input.txt -o myDB.db "select nameOfText from tbl where contents like '%test'"

答案 2 :(得分:2)

函数readfile读取文件的内容并将该内容作为BLOB返回。使用命令行shell时可以使用此功能。例如:

sqlite> CREATE TABLE files(name TEXT, content TEXT);
sqlite> INSERT INTO files(name,content) VALUES('a.txt',readfile('a.txt'));

此功能的文档和writefile位于http://www.sqlite.org/cli.html