我正在尝试将文件内容插入sqlite数据库中,该数据库长约35万个字符。
VALUE=$(cat file)
sqlite3 database.db "UPDATE table SET value='$VALUE';"
但是,我收到“参数列表过长的错误”
我尝试查找它,但是大多数解决方案都是针对find,ls等。 我该怎么做?
答案 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
期望的格式的数据。