2009-11-03 15 views
7

Chcę rozpocząć korzystanie z Core Date na iPhonie z wcześniej istniejącymi bazami danych MySQL. Jaki jest najprostszy sposób na przeniesienie bazy danych MySQL do SQLite?Przeniesienie MySQL do SQLite

Próbowałem już używać SQLite Migrator, ale nie wiem, gdzie znaleźć sterowniki ODBC dla komputerów Mac (Snow Leopard). Znalazłem http://www.ch-werner.de/sqliteodbc/, który wydaje się mieć sterowniki, ale są one przeznaczone dla Power PC.

Jeśli ktoś może mi pomóc, lub powiedzieć, jakie są najlepsze narzędzia, byłbym wdzięczny.

Dzięki.

+0

Czy jest to sprawa jednorazowa czy trzeba to robić wielokrotnie? – cethegeek

+0

Zrobiłbym to od czasu do czasu i wielokrotnie. Znam MySQL, więc wolę w nim pracować, ale muszę go przekonwertować na iPhone'a. –

Odpowiedz

-1

Aby wykonać moje konwersje, skorzystałem z usługi ODBC from Actual Access. Myślę, że użyłem go w połączeniu z SQLite Migrator. Nigdy nie podobał mi się ten sposób, chociaż zawsze był niezgrabny. Kosztowne, kosztowało to około 80 dolarów za te dwie części oprogramowania.

Gdybym musiał zrobić to jeszcze raz, kupiłbym SQLiteConverter przez SQLabs. Używam ich SQLite Managera i chociaż ma on wiele problemów z interfejsem, dla oprogramowania baz danych nie jest zły.

http://www.sqlabs.net/sqliteconverter.php

1

Czy obejrzałeś this Perl script? Nie użyłem go - po prostu szybko przeszukano mysql do migracji sqlite i pojawił się.


Edit (po odpowiedział na mój komentarz):

reverse direction is dealt with here.

Jeśli zamierzasz robić to wielokrotnie i jeśli zmiany struktury danych mają się zdarzyć, może lepiej byłoby użyć czegoś takiego jak Django (choć w bardzo hackish sposób). Dzięki niemu bym:

# 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 
+0

Dzięki za odpowiedź. Myślę, że chcę czegoś z minimalnym wykształceniem i konfiguracją, ponieważ nie zamierzam robić tego tak często. –

6

Najprawdopodobniej najprościej byłoby użyć mysqldump, aby zrzucić surowy SQL z bazy danych MySQL do pliku tekstowego, a następnie użyć funkcji sqlite3_exec() do wykonania tego SQL w celu zapełnienia bazy danych SQLite.

+1

jest to nieco inny dialekt SQL, szczególnie w odniesieniu do schematów tworzenia tabel. –

+2

Dobra uwaga. Przypuszczam, że jeśli schemat rzadko się zmieniał, możesz zrzucić tylko dane z bazy danych MySql i mieć osobny plik skryptu/sql, który skonstruował bazę danych sqlite. Należy również podać --complete-insert to mysqldump. Sqlite nie może obsłużyć wstawek złożonych (patrz pytanie 1609637). –

+0

+1 dla mysqldump. Chociaż istnieją pewne różnice między składniami MySQL i SQLite, można łatwo znaleźć i zastąpić ulubionym oprogramowaniem lub skryptem, ponieważ różnice są minimalne. Na przykład AUTOINCREMENT jest inny. Jeśli jest to coś, co będziesz robić regularnie, możesz napisać własny skrypt lub znaleźć taki, który napisał ktoś, aby twój mysqldump był kompatybilny z sqlite. – styfle

-1

Dostępny jest bezpłatny produkt ETL, który może być używany do migrowania danych z jednej bazy danych do drugiej. Zobacz: http://www.talend.com/index.php

Powodzenia!

+0

Kupuj uważaj - ta witryna wyłudza informacje. –

1

Oto lista konwerterów:


Alternatywną metodą, która będzie działać dobrze, ale rzadko wspomina się: użycie klasy ORM że Abstracts konkretne różnice baza z dala dla ciebie. na przykładdostaniesz je w PHP ( RedBean), Python (Django warstwy ORM, Storm, SqlAlchemy), Ruby on Rails ( ActiveRecord), kakao ( CoreData)

czyli można to zrobić:

  1. ładowania danych z źródłowa baza danych korzystająca z klasy ORM.
  2. Przechowuj dane w pamięci lub serializuj na dysk.
  3. Przechowuj dane w źródłowej bazie danych przy użyciu klasy ORM.