views:

633

answers:

5

I want to start using Core Date on iPhone with pre-existing MySQL databases. What's the easiest way to transfer a MySQL database to SQLite?

I've tried using SQLite Migrator, but I don't know where to find the ODBC drivers for Mac (Snow Leopard). I found http://www.ch-werner.de/sqliteodbc/ which seems to have drivers, but they are for Power PC.

If someone could give me a walkthrough, or tell me what the best tools for this are, I'd be grateful.

Thanks.

A: 

Have you looked at this Perl script? I haven't used it - just did a quick search for mysql to sqlite migration and it popped right up.


Edit (after you replied to my comment):

The reverse direction is dealt with here.

If you are going to do it repeatedly and if data structure changes are to happen, maybe you would be better off using something like Django (albeit in a very hackish way). With it I would:

# This three lines are done once
django-admin.py startproject mymigrationproject
cd mymigrationproject
./manage.py startapp migration

# The following lines you repeat each time you want to migrate the data
edit settings.py and make the changes to connect to MySQL
./manage.py inspectdb > ./migration/models.py
edit ./migration/models.py to reorder tables (tables in which other tables depend on top)
mkdir fixtures
./manage.py dumpdata migration > ./fixtures/data.json
edit settings.py and make the changes to connect to SQLite
./manage.py syncdb
./manage.py loaddata ./fixtures.data.json
celopes
Thanks for the answer. I think I want something with minimal learning and set up though, since I'm not going to be doing it that often.
nevan
A: 

You can use a trial from http://www.sqlmaestro.com/products/sqlite/datawizard/

It is completely functional for 30 days.

StarWind Software
+1  A: 

Perhaps the simplest would be to use mysqldump to dump the raw SQL from your MySQL database into a text file and then use the sqlite3_exec() function to execute that SQL in order to populate the SQLite database.

Kassini
it's a slightly different dialect of SQL however, particularly in regard to table creation schemas.
Alister Bulman
Good point. I suppose if the schema rarely changed you could dump just the data from the MySql database and have a separate script/sql file that constructed the sqlite database.You would also need to specify --complete-insert to mysqldump. Sqlite can't handle compound inserts (see question 1609637).
Kassini
A: 

There is a free ETL product that can be used to migrate data from one db to another. Have a look: http://www.talend.com/index.php

Good luck!

Greg
A: 

You can get ODBC drivers for Mac OS X from Actual Technologies.

http://www.actualtech.com/

To connect to MySQL you need their ODBC Driver for Open Source Databases:

http://www.actualtech.com/product_opensourcedatabases.php

(Disclaimer: I am the author of SQLite Migrator)

Paul Lefebvre