Aloha Silver
Aloha Silver

Reputation: 1394

SQLite3: Batch Insert?

I've got some old code on a project I'm taking over. One of my first tasks is to reduce the final size of the app binary. Since the contents include a lot of text files (around 10.000 of them), my first thought was to create a database containing them all.

I'm not really used to SQLite and Core Data, so I've got basically two questions:

1 - Is my assumption correct? Should my SQLite file have a smaller size than all of the text files together? 2 - Is there any way of automating the task of getting them all into my newly created database (maybe using some kind of GUI or script), one file per record inside a single table?

I'm still experimenting with CoreData, but I've done a lot of searching already and could not find anything relevant to bringing everything together inside the database file. Doing that manually has proven no easy task already!

Thanks.

Upvotes: 1

Views: 908

Answers (3)

Martin v. Löwis
Martin v. Löwis

Reputation: 127497

An alternative to using SQLite might be to use a zipfile instead. This is easy to create, and will surely safe space (and definitely reduce the number of files). There are several implementations of using zipfiles on the iphone, e.g. ziparchive or TWZipArchive.

Upvotes: 1

Michael Low
Michael Low

Reputation: 24506

If you're looking for a SQLite bulk insert command to write your script for 2), there isn't one AFAIK. Prepared insert statments in a loop inside a transaction is the best you can do, I imagine it would take only a few seconds (if that) to insert 10,000 records.

Upvotes: 0

ldav1s
ldav1s

Reputation: 16315

1 - It probably won't be any smaller, but you can compress the files before storing them in the database. Or without the database for that matter.

2 - Sure. It's shouldn't be too hard to write a script to do that.

Upvotes: 1

Related Questions