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

Sar*_*nic 11 sqlite

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

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

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

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

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

任何建议将不胜感激.

谢谢 !!

小智 21

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

name1,content1
name2,content2
Run Code Online (Sandbox Code Playgroud)

尝试以下命令将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>
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

termsql -c nameOfText,contents -i input.txt -o myDB.db 
Run Code Online (Sandbox Code Playgroud)

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

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

termsql -d ',' -c nameOfText,contents -i input.txt -o myDB.db
Run Code Online (Sandbox Code Playgroud)

您可以在这里获取 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'"
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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

该函数的文档可在sqlite.org/cli.htmlwritefile上找到。