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

xtupzzrd  于 2023-02-09  发布在  SQLite
关注(0)|答案(4)|浏览(204)

我有一些简单的文本文件,其中只包含普通文本。
我想知道是否有一种方法可以将文本内容加载到sqlite中的表中。

  • 所以也许我可以
  • 然后将nameOfText放入第一列,将内容放入第二列。

如果输入文件名很困难,那么将内容加载到一个列的表中也很好。
欢迎提出任何建议。
谢谢大家!

kuhbmx9i

kuhbmx9i1#

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

x7yiwoj4

x7yiwoj42#

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语句。以下示例将创建您的数据库,并在命令行上为contents列包含字符串'test'的所有行返回nameOfText列。

termsql -d ',' -c nameOfText,contents -i input.txt -o myDB.db "select nameOfText from tbl where contents like '%test'"
zzoitvuj

zzoitvuj3#

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

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

此函数和writefile的文档可在sqlite.org/cli.html上获得。

798qvoo8

798qvoo84#

虽然readfile函数可以完成这项工作,但它只能在SQLite命令行界面(sqlite.exe)中工作。
如果您不使用CLI,您仍然可以使用fileio_read(path)函数在sqlean-fileio扩展的帮助下将文件读入表中。
您甚至可以使用fileio_ls(path)函数通过单个SQL查询加载一堆文件。
例如:

$ echo 'hello world' > hello.txt
$ echo 'sqlite is awesome' > awesome.txt
create table files(name text, content text);

insert into files(name, content)
select substr(name, 3), fileio_read(name)
from fileio_ls('.')
where name like '%.txt';

select * from files;
┌─────────────┬───────────────────┐
│    name     │      content      │
├─────────────┼───────────────────┤
│ awesome.txt │ sqlite is awesome │
│ hello.txt   │ hello world       │
└─────────────┴───────────────────┘

相关问题