我试图将一个文件的内容插入到一个sqlite数据库中,该数据库大约有350k个字符长。
VALUE=$(cat file) sqlite3 database.db "UPDATE table SET value='$VALUE';"
字符串但是,我得到一个“参数列表太长错误”我试着查找它,但大多数解决方案都是针对find,ls等。我该怎么做?
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'));
字符串或者别的什么
rkkpypqq2#
您使用的操作系统对命令行的长度有上限,以字节为单位。(大多数操作系统都有这样的限制。)sqlite3的最后一个参数,因为它包含文件的内容,超过350k字节。相反,您应该使用COPY命令直接从文件中读取sqlite3。比如说
sqlite3
COPY
sqlite3 database.db "COPY table FROM file"
字符串您可能需要稍微编辑数据文件,以COPY期望的格式提供数据。
mlnl4t2r3#
这一行代码应该可以工作:
sqlite3 database.db "UPDATE table SET value=readfile('file');"
字符串
3条答案
按热度按时间iih3973s1#
sqlite3 shell有一个readfile()函数,它返回一个包含给定文件内容的blob。
字符串
或者别的什么
rkkpypqq2#
您使用的操作系统对命令行的长度有上限,以字节为单位。(大多数操作系统都有这样的限制。)
sqlite3
的最后一个参数,因为它包含文件的内容,超过350k字节。相反,您应该使用
COPY
命令直接从文件中读取sqlite3
。比如说字符串
您可能需要稍微编辑数据文件,以
COPY
期望的格式提供数据。mlnl4t2r3#
这一行代码应该可以工作:
字符串