12

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

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

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

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

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

任何建议将不胜感激。

谢谢 !!

4

3 回答 3

25

假设您有一个 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命令更改文本文件中使用的分隔符。

于 2013-03-10T06:26:05.483 回答
5

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

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

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

您没有告诉我们分隔符 nameOfText 和上下文是由分隔的。默认情况下,termsql 假定空格是分隔符。但是如果它是',',那么你会做这样的事情:

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

您可以在这里获取 termsql: https ://github.com/tobimensch/termsql

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

termsql -d ',' -c nameOfText,contents -i input.txt -o myDB.db "select nameOfText from tbl where contents like '%test'"
于 2014-05-01T21:49:17.473 回答
4

该函数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获得。

于 2015-11-19T11:53:57.127 回答