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