22

Is it possible somehow to create in-memory database in SQLite and then destroy it just by some query?

I need to do this for unit testing my db layer. So far I've only worked by creating normal SQLite db file and delete if after all tests, but doing it all in memory would be much better.

So is it possible to instanciate database only in memory without writing anything to disc? I can't use just transactions, because I want to create whole new database.

4 Answers 4

33

Create it with the filename ":memory:": In-Memory Databases.

It'll cease to exist as soon as the connection to it is closed.

Sign up to request clarification or add additional context in comments.

1 Comment

Is it posible to work with an in-memory database and then copy it to disk? (the idea is to accelerate the blocking and time-expensive operations of writings)
2

As an alternative to in memory databases, you can create a SQLite temporary database by using an empty string for the filename. It will be deleted when the connection is closed. The advantage over an in-memory database is your databases are not limited to available memory.

Alternatively, you can create your database in a temp file and let the operating system clean it up. This has the advantage of being accessible for inspection.

Comments

1

I'd suggest mounting a tmpfs filesystem somewhere (RAM only filesystem) and using that for your unit tests.

Instantiate DB files as normal then blow them away using rm - yet nothing has gone to disk.

(EDIT: Nice - somebody beat me to a correct answer ;) Leaving this here as another option regardless)

Comments

1

I suggest you using lmDisk toolkit.

It's a tool kit to mount a part of ram or image file as normal disk. you can copy your project (or just your db) there.

I've try it to process raw data and create a db for a game ai.

1 Comment

this is brilliant, why has nobody upvoted this yet?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.