我有一些仅包含普通文本的简单文本文件。
我想知道是否有一种方法可以将文本内容加载到sqlite中的表中。
所以也许我可以创建表myTable(nameOfText TEXT,contents TEXT);
然后将文本名称放入第一列,将内容放入第二列。
如果很难输入文件名,则将内容加载到一个列表中也可以。
任何建议将不胜感激。
谢谢!
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'"
说您有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命令更改文本文件中使用的分隔符。
函数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。