如何使用blob从sqlite数据库获取sql转储?

如何使用blob从sqlite数据库获取sql转储?,sqlite,blob,dump,Sqlite,Blob,Dump,我需要创建sql转储以修补现有数据库文件。 我知道如何使用sqlite3命令行客户端创建sql转储,但它不能正确地处理BLOB 如何使用正确的blob创建sql转储? sqlite3.dump命令是否有将blob编码为字符串的选项 我需要一个可编写脚本的解决方案,以便将其集成到构建脚本中 干杯它应该是现成的 我是这样创建表的: sqlite> CREATE TABLE images( id INTEGER PRIMARY KEY, name TEXT, content BLOB ); 插

我需要创建sql转储以修补现有数据库文件。 我知道如何使用sqlite3命令行客户端创建sql转储,但它不能正确地处理BLOB

如何使用正确的blob创建sql转储? sqlite3.dump命令是否有将blob编码为字符串的选项

我需要一个可编写脚本的解决方案,以便将其集成到构建脚本中


干杯

它应该是现成的

我是这样创建表的:

sqlite> CREATE TABLE images( id INTEGER PRIMARY KEY, name TEXT, content BLOB );
插入一行:

sqlite> INSERT INTO images VALUES ( 1, 'test 1', X'00ff00ffaabbcc' );
已创建转储:

sqlite> .dump
没关系:

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE images( id INTEGER PRIMARY KEY, name TEXT, content BLOB );
INSERT INTO "images" VALUES(1,'test 1',X'00FF00FFAABBCC');
COMMIT;

如果您的数据是以某种方式插入的,SQLite认为它是字符串(文本)而不是BLOB,那么您可以使用临时表和强制类型转换来转换它。假设您有下表:

CREATE TABLE images ( id, name, data )
示例解决方案是:

CREATE TEMP TABLE images2 ( id INT, name TEXT, data BLOB );
INSERT INTO images2
    SELECT id, name, CAST ( data AS BLOB ) FROM images;
DROP TABLE images;
CREATE TABLE images ( id INT, name TEXT, data BLOB );
INSERT INTO images
    SELECT * FROM images;

为我工作…

我过去曾多次使用
.dump
创建包含
blob
数据的数据库的ASCII副本。转储的结果是什么样的?blob应该有一个
X
作为值的前缀,例如,
X'C676972686F6C65636F756E'