如何从blob的sqlite数据库中获取sql dump?

时间:2010-12-22 09:32:31

标签: sqlite blob dump

我需要创建sql转储才能修补现有的数据库文件。 我知道如何使用sqlite3命令行客户端创建sql转储,但它无法与blob一起正常工作。

如何使用正确的blob创建sql转储? sqlite3 .dump命令可以选择将blob编码为字符串吗?

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

干杯

2 个答案:

答案 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;

为我工作......