sqlite - 将数据插入 blob

标签 sql shell sqlite

我正在尝试使用 SQLite3 的 shell 将二进制数据插入到 blob 中,这意味着常规 SQL 语句。这是我的表格:

CREATE TABLE MYTABLE
    (ID INTEGER,
     BINDATA BLOB NOT NULL,
     SOMEFK INTEGER REFERENCES OTHERTABLE(ID) NOT NULL,
     PRIMARY KEY(ID)
);

这就是我正在尝试的插入语句:

INSERT INTO MYTABLE (BINDATA, SOMEFK)
VALUES (__READBINDATA('/tmp/somefile'), 1);

__READBINDATA(file) 是我正在寻找的函数。这可能吗?

最佳答案

没有内置函数或 shell 函数可以将文件读入 blob。

但是,在 hexdump 的帮助下工具,可以将文件的内容转换为 blob literal :

echo "insert into mytable(bindata, somefk) " \
     "values(x'"$(hexdump -v -e '1/1 "%02x"' /tmp/somefile)"', 1);"

然后可以将该命令通过管道传输到 sqlite3 shell。

关于sqlite - 将数据插入 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12865697/

相关文章:

asp.net - 调用 SqlMembershipProvider GetUser 的无效转换异常

linux - 删除 shell 中以某个字符开头的行,但保留负值

shell - 如何将列表传递给 KornShell 脚本中的函数?

java - hibernate PropertyAccessException : Error accessing field when use @ManyToMany

java - Spring 管理的数据源连接到具有域身份验证的 MS Sql 服务器

php - 计算整个类别的销售额

Mysql查询无法解决

Django 运行服务器永久

python - 创建 super 用户 django.db.utils.IntegrityError : NOT NULL constraint failed

sqlite - FireDAC:节省 SQLite DB 的时间