我有简单的文本文件,只包含普通文本。
我想知道是否有办法将文本内容加载到sqlite中的表。
所以也许我可以创建表myTable(nameOfText TEXT,内容TEXT);
然后将文本名称放入第一列,将内容放入第二列。
如果输入文件的名称很难,将内容加载到一个列表中就可以了。
任何建议都将不胜感激。
谢谢!
答案 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。