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

Bash /usr/bin/sqlite3:参数列表太长,bash,sqlite,Bash,Sqlite,我试图将文件内容插入sqlite数据库,该数据库大约有350k个字符长 VALUE=$(cat file) sqlite3 database.db "UPDATE table SET value='$VALUE';" 但是,我得到一个“参数列表太长错误” 我试着查找,但大多数解决方案都是针对find、ls等的。 如何做到这一点?您所使用的操作系统对命令行的长度有上限(以字节为单位)。(大多数操作系统都有这样的限制。)sqlite3的最后一个参数,因为它包含文件的内容,测量值超过350k字节 相

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

VALUE=$(cat file)
sqlite3 database.db "UPDATE table SET value='$VALUE';"
但是,我得到一个“参数列表太长错误”

我试着查找,但大多数解决方案都是针对find、ls等的。
如何做到这一点?

您所使用的操作系统对命令行的长度有上限(以字节为单位)。(大多数操作系统都有这样的限制。)
sqlite3
的最后一个参数,因为它包含文件的内容,测量值超过350k字节

相反,应该使用
COPY
命令直接从文件中读取
sqlite3
。差不多

sqlite3 database.db "COPY table FROM file"

您可能需要稍微编辑数据文件,以提供
复制
期望的格式的数据。

您所在的操作系统对命令行的长度有上限,以字节为单位。(大多数操作系统都有这样的限制。)
sqlite3
的最后一个参数,因为它包含文件的内容,测量值超过350k字节

相反,应该使用
COPY
命令直接从文件中读取
sqlite3
。差不多

sqlite3 database.db "COPY table FROM file"
您可能需要稍微编辑数据文件,以提供
COPY
期望的格式的数据。

sqlite3 shell有一个函数,该函数返回包含给定文件内容的blob

$ sqlite3 foo.db
sqlite> CREATE TABLE example(file TEXT, contents BLOB);
sqlite> INSERT INTO example VALUES('foo.txt', readfile('foo.txt'));
或者无论什么,sqlite3 shell都有一个函数,返回包含给定文件内容的blob

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

或者你能详细说明一下吗?我找不到关于sqlite3.Hm复制方法的任何信息,我在一个网站上看到了对
COPY
命令的引用,但在任何sqlite官方文档中都很难找到它。哦,显然它被删除了
.import
可能是您想要的。我不认为。import会有帮助。我想你把它弄糊涂了。导入似乎是为了将csv导入数据库。但是,我想为文本文件的内容设置一个字段。我对sqlite不够熟悉,无法提供完全实现的解决方案。最好的方法可能是根据原始文件的内容创建一个稍微不同的新文件,首先使用
。导入
将其拉入临时表,然后使用
更新
从临时表读取。(是的,我应该删除这个答案,并对你的问题作出评论。)你能详细说明一下吗?我找不到关于sqlite3.Hm复制方法的任何信息,我在一个网站上看到了对
COPY
命令的引用,但在任何sqlite官方文档中都很难找到它。哦,显然它被删除了
.import
可能是您想要的。我不认为。import会有帮助。我想你把它弄糊涂了。导入似乎是为了将csv导入数据库。但是,我想为文本文件的内容设置一个字段。我对sqlite不够熟悉,无法提供完全实现的解决方案。最好的方法可能是根据原始文件的内容创建一个稍微不同的新文件,首先使用
。导入
将其拉入临时表,然后使用
更新
从临时表读取。(是的,我应该删除这个答案,并对你的问题作出评论。)