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

时间:2018-08-06 15:19:06

标签: bash sqlite

我正在尝试将文件内容插入sqlite数据库中,该数据库长约35万个字符。

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

但是,我收到“参数列表过长的错误”

我尝试查找它,但是大多数解决方案都是针对find,ls等。 我该怎么做?

2 个答案:

答案 0 :(得分:2)

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'));

或其他

答案 1 :(得分:0)

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

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

sqlite3 database.db "COPY table FROM file"

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