从bytearray创建sqlite inmemory数据库

46qrfjad  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(262)

我需要使用一些java代码处理来自sqlite数据库的数据。问题是数据库是从外部服务检索的,因此它只能作为 InputStream .
我真的希望在开始处理数据之前避免将db保存到文件系统中,但是我看不到这样做的方法。
我目前正在使用sqljet,因为它提供了一个创建内存中数据库的选项。然而,似乎没有办法扭转局面 InputStream /将字节数组放入数据库。
没有什么强迫我使用sqljet,如果它提供了所需的功能,它可以很容易地被任何其他工具取代。

ryoqjall

ryoqjall1#

不能这样做。也许java支持某种机制来创建某种形式的虚拟文件,这种文件在本地(向当前进程)显示为某种物理文件。
我可以想出一种方法来绕过这个限制,但在你的环境中,这可能是不可行或不可接受的。您可以更改服务以返回数据库转储并将其加载到接收器的内存数据库中:
以下是生成转储的方法:


# sqlite3

SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table foo (i text);
sqlite> insert into foo values ('a');
sqlite> insert into foo values ('b');
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE foo (i text);
INSERT INTO foo VALUES('a');
INSERT INTO foo VALUES('b');
COMMIT;

相关问题