/usr/bin/sqlite3:参数列表太长

g6baxovj  于 2023-08-06  发布在  SQLite
关注(0)|答案(3)|浏览(140)

我试图将一个文件的内容插入到一个sqlite数据库中,该数据库大约有350k个字符长。

VALUE=$(cat file)
sqlite3 database.db "UPDATE table SET value='$VALUE';"

字符串
但是,我得到一个“参数列表太长错误”
我试着查找它,但大多数解决方案都是针对find,ls等。我该怎么做?

iih3973s

iih3973s1#

sqlite3 shell有一个readfile()函数,它返回一个包含给定文件内容的blob。

$ sqlite3 foo.db
sqlite> CREATE TABLE example(file TEXT, contents BLOB);
sqlite> INSERT INTO example VALUES('foo.txt', readfile('foo.txt'));

字符串
或者别的什么

rkkpypqq

rkkpypqq2#

您使用的操作系统对命令行的长度有上限,以字节为单位。(大多数操作系统都有这样的限制。)sqlite3的最后一个参数,因为它包含文件的内容,超过350k字节。
相反,您应该使用COPY命令直接从文件中读取sqlite3。比如说

sqlite3 database.db "COPY table FROM file"

字符串
您可能需要稍微编辑数据文件,以COPY期望的格式提供数据。

mlnl4t2r

mlnl4t2r3#

这一行代码应该可以工作:

sqlite3 database.db "UPDATE table SET value=readfile('file');"

字符串

相关问题