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