如何将非常大的文件读写到sqlite-PHP中的blob列?

Rol*_*uhs 3 php sqlite

我想在PHP的sqlite3数据库中插入一个(任意大)上传的文件。

通常,我会使用file_get_contents()该字符串,然后将其放入SQL命令,但随后遇到128MB的内存限制。

根据这个讨论线程,似乎也没有简单的命令行解决方案。(但是,当然我很乐意听到其他情况。)

如何在不耗尽内存的情况下读取/写入单个BLOB字段?

Rol*_*uhs 5

从sqlite 3.8.6开始,readfile / writefile命令可用:

http://www.sqlite.org/cli.html#fileio

读取文件:

CREATE TABLE images(name TEXT, type TEXT, img BLOB);
INSERT INTO images(name,type,img) VALUES('icon','jpeg',readfile('icon.jpg'));
Run Code Online (Sandbox Code Playgroud)

写一个文件:

SELECT writefile('icon.jpg',img) FROM images WHERE name='icon';
Run Code Online (Sandbox Code Playgroud)