我需要创建sql转储才能修补现有的数据库文件。 我知道如何使用sqlite3命令行客户端创建sql转储,但它无法与blob一起正常工作。
如何使用正确的blob创建sql转储? sqlite3 .dump命令可以选择将blob编码为字符串吗?
我需要一个可编写脚本的解决方案,以便将其集成到构建脚本中。
干杯
答案 0 :(得分:0)
它应该开箱即用。
我用这种方式创建了表:
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;
答案 1 :(得分:0)
如果您的数据是以某种方式插入的,那么SQLite认为它是字符串(TEXT)而不是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;
为我工作......