Bash /usr/bin/sqlite3:参数列表太长
我试图将文件内容插入sqlite数据库,该数据库大约有350k个字符长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字节 相
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不够熟悉,无法提供完全实现的解决方案。最好的方法可能是根据原始文件的内容创建一个稍微不同的新文件,首先使用。导入将其拉入临时表,然后使用更新从临时表读取。(是的,我应该删除这个答案,并对你的问题作出评论。)