【问题标题】:Storing large images as BLOB inside a SQLite DB using Bash使用 Bash 在 SQLite DB 中将大图像存储为 BLOB
【发布时间】:2014-10-31 12:16:47
【问题描述】:

我正在创建一个小脚本来导入 SQLite 数据库中的一个大图像目录, 我非常清楚 SQLite 不是存储大 blob 的理想场所,但我必须这样做。

其实我正在尝试使用 hexdump:

sqlite3 name.db "INSERT INTO table (image) values(x'"$(hexdump -v -e '1/1 "%02x"' ./filename.jpg)"');"

但偶尔,在相当大的图像上,它会返回错误:

sqlite3: Argument list too long

您将如何解决这个问题?

【问题讨论】:

标签: database image bash sqlite blob


【解决方案1】:

当将 SQL 命令作为参数提供给sqlite3 时,必须生成hexdump 的整个输出参数可以实际使用之前。

管道没有尺寸限制:

(echo -n "INSERT INTO table (image) values(x'"
 hexdump -v -e '1/1 "%02x"' ./filename.jpg
 echo "');") | sqlite3 name.db

或者,您可以将命令写入文件,并将sqlite3 告诉.read

3.8.6 或更高版本中的 SQLite shell 具有用于直接读取文件的 readfile() function

【讨论】:

  • 太棒了!我已经在考虑使用管道了,我现在就试试你的解决方案。
  • 好的,我不得不修改一下,这是对我有用的版本:(echo -n "INSERT INTO table (image) values(x'"$(hexdump -v -e '1/1 "%02x"' ./filename.jpg)"');") | sqlite3 name.db
  • 这适用于我需要插入数据库的长 css 值。
猜你喜欢
  • 2019-04-29
  • 2013-12-04
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多