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

问题描述 投票:11回答:3

我有一些仅包含普通文本的简单文本文件。

我想知道是否有一种方法可以将文本内容加载到sqlite中的表中。

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

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

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

任何建议将不胜感激。

谢谢!

sqlite
3个回答
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://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'"

21
投票

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


2
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.