Działa jak urok! Oto trochę dokumentacji: $ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlitegist.github.com/943776
kachar
Skrypt po prostu pobiera argumenty z wiersza poleceń i przekazuje je do mysqldump, dzięki czemu możesz dowiedzieć się o konfigurowaniu niestandardowych portów itp. Za pomocą man mysqllubman mysqldump
Alternatywną metodą, która działałaby nawet w systemie Windows, ale rzadko jest wspominana, jest: użyj klasy ORM, która wyodrębnia określone różnice w bazie danych. np. dostajesz je w PHP ( RedBean ), Pythonie (warstwa ORM Django, Storm , SqlAlchemy ), Ruby on Rails ( ActiveRecord ), Cocoa ( CoreData ) itp.
czyli możesz to zrobić:
Załaduj dane ze źródłowej bazy danych przy użyciu klasy ORM.
Przechowuj dane w pamięci lub serializuj na dysk.
Przechowuj dane w docelowej bazie danych za pomocą klasy ORM.
Nie każdy schemat bazy danych można przekonwertować. MySQL jest bardziej złożony i bogaty w funkcje niż SQLite. Jeśli jednak Twój schemat jest wystarczająco prosty, możesz zrzucić go do pliku SQL i spróbować zaimportować / załadować do bazy danych SQLite.
Po zrzuceniu bazy danych MySQL do pliku, możesz użyć tego skryptu, aby przekonwertować ją na SQLite github.com/dumblob/mysql2sqlite (jak wspomniano w odpowiedzi @David_LeBauer).
Paul Rougieux
7
Miałem ten sam problem około 2 dni temu, kiedy musiałem przekonwertować bazę danych MySQL 20 GB + na SQLite. Nie było to łatwe zadanie i ostatecznie napisałem ten pakiet Pythona, który spełnia swoje zadanie.
Zaletą pisania w Pythonie jest to, że jest wieloplatformowy (w przeciwieństwie do skryptu powłoki / bash) i można go łatwo zainstalować za pomocą pip install(nawet w systemie Windows). Wykorzystuje generatory i fragmenty przetwarzanych danych, dzięki czemu jest bardzo wydajny pod względem pamięci.
Można ją wywołać za pomocą wiersza poleceń, ale można jej również użyć jako standardowej klasy Pythona, którą można dołączyć do większej aranżacji Pythona.
Oto jak go używasz:
Usage: mysql2sqlite [OPTIONS]
Options:-f,--sqlite-file PATH SQLite3 database file [required]-d,--mysql-database TEXT MySQL database name [required]-u,--mysql-user TEXT MySQL user [required]-p,--mysql-password TEXT MySQL password-h,--mysql-host TEXT MySQL host. Defaults to localhost.-P,--mysql-port INTEGER MySQL port. Defaults to 3306.-c,--chunk INTEGER Chunk reading/writing SQL records-l,--log-file PATH Log file-V,--vacuum Use the VACUUM command to rebuild the SQLitedatabasefile, repacking it into a minimal amount
ofdisk space
--use-buffered-cursors Use MySQLCursorBuffered for reading the MySQLdatabase. This can be useful in situations where
multiple queries,with small result sets, need to
be combined or computed with each other.--help Show this message and exit.
Hej @techouse, wygląda świetnie! Czy jest jakiś sposób, aby działał z .sqlplikiem zrzutu, czy też wymaga połączenia z zainstalowaną bazą danych MySQL?
vortek
Hej! Ummm, nie wymaga to działającej bazy danych MySQL. Jeśli masz zrzut bez rzeczywistego serwera, najlepiej jest zmienić plik ręcznie, jeśli wiesz, co robisz.
Klemen Tušar
@arkadianriver Sugeruję, abyś zawsze korzystał ze środowisk wirtualnych z Pythonem 😎
To działało dobrze, jeśli twoje dane nie mają charakteru takiego jak apostrof. Na przykład „To jest książka Piotra” w sql głupi będzie „To jest książka Piotra”. Spowoduje to zgłoszenie błędu przeglądarki DB, ponieważ duże dane są trudne do usunięcia. Ale jeśli zaimportujesz dane z phpAdmina jako CSV do przeglądarki DB, ten import się powiedzie. Mam nadzieję, że to pomoże
Seunope
1
Moim rozwiązaniem tego problemu na komputerze Mac było
Jak mogę skopiować tylko jedną tabelę z bazy danych, a nie całą bazę danych mysql?
Atul Vaibhav
Zrobiłem to w przeszłości dla pojedynczego stołu, ale może być lepszy sposób. Wyeksportuj tabelę jako plik CSV z zaznaczoną opcją nazw kolumn w pierwszym wierszu. Następnie za pomocą przeglądarki DB Browser for SQLite zaimportuj tabelę do mojej istniejącej bazy danych sqlite, używając opcji importu tabeli z csv. Będziesz wtedy prawdopodobnie musiał wejść i zmienić pola na wymagany typ, ponieważ uważam, że wszystkie pola zostaną ustawione na TEKST. W projekcie, nad którym pracowałem, opracowaliśmy proces, w którym wykonaliśmy wywołanie API w celu zwrócenia wszystkich danych w tabeli, a następnie wstawiliśmy / zastąpiliśmy dane w bazie danych aplikacji.
Grant Luck
Wygląda na to że działa. Mimo to nie mogę znaleźć miejsca, w którym znajduje się plik wyjściowy. Możesz mi pomóc?
Pontios
1
Wypróbowałem kilka metod w tym wątku, ale nic nie działało. Oto nowe rozwiązanie, które również okazało się bardzo proste:
Zainstaluj RazorSQL . Działa na Mac, Windows i Linux.
W RazorSQL połącz się z bazą danych, na przykład na hoście lokalnym. Konwersja nie działa z plikami zrzutu sql.
Kliknij prawym przyciskiem myszy swoją bazę danych -> Konwersja bazy danych -> wybierz SQLite. Spowoduje to zapisanie pliku txt ze wszystkimi sqlitezapytaniami niezbędnymi do utworzenia tej bazy danych.
Zainstaluj menedżera bazy danych SQLite, na przykład przeglądarkę DB dla SQLite . Działa na każdym systemie operacyjnym.
Utwórz pustą bazę danych, przejdź do zakładki Wykonaj SQL i wklej treść z kroku 3.
Wydaje się, że RazorSQL po prostu buduje „wspólny” plik * .sql z definicjami tabel i wstawianiem danych, ale nie ma nic szczególnego do SQLite. Nie eksportował widoków, co jest dużym minusem. Klient mysqldump, który jest dostarczany z MySql, również eksportuje widoki, ale produkuje również wiele warunkowych rzeczy itp., Których SQLite nie przetrawi.
dalilander
0
Jeśli masz doświadczenie, pisz proste skrypty przez Perl \ Python \ etc i konwertuj MySQL na SQLite. Odczytaj dane z MySQL i zapisz je w SQLite.
Podoba mi się SQLite2009 Pro Enterprise Manager sugerowany przez Jfly. Jednak:
Typ danych MySQL INT nie jest konwertowany na typ danych SQlite INTEGER (działa z DBeaver)
Nie importuje ograniczeń klucza obcego z MySQL (nie mogłem znaleźć żadnego narzędzia, które obsługuje transfer ograniczeń klucza obcego z MySQL do SQlite).
Z listy narzędzi konwertujących znalazłem Kexi . Jest to narzędzie interfejsu użytkownika do importowania z różnych serwerów DB (w tym MySQL) do SQLite. Podczas importowania jakiejś bazy danych (powiedzmy z MySQL) przechowuje ją w formacie Kexi. Format Kexi jest „rodzimym” formatem SQLite. Po prostu skopiuj plik kexi i przechowuj dane w formacie sqlite
Jeśli otrzymałeś plik bazy danych i nie zainstalowałeś prawidłowego serwera (SQLite lub MySQL), wypróbuj to narzędzie: https://dbconvert.com/sqlite/mysql/ Wersja próbna umożliwia konwersję pierwszych 50 rekordów każdej tabeli pozostałe dane są oznaczone znakiem wodnym. Jest to program systemu Windows, który może wykonać zrzut do działającego serwera bazy danych lub zrzucić dane wyjściowe do pliku .sql
Odpowiedzi:
W serwisie GitHub znajduje się skrypt mysql2sqlite.sh
Jak opisano w nagłówku, skrypt może być używany w następujący sposób:
alternatywy
źródło
$ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite
gist.github.com/943776man mysql
lubman mysqldump
Tutaj jest lista konwerterów . ( migawka w archive.today )
Alternatywną metodą, która działałaby nawet w systemie Windows, ale rzadko jest wspominana, jest: użyj klasy ORM, która wyodrębnia określone różnice w bazie danych. np. dostajesz je w PHP ( RedBean ), Pythonie (warstwa ORM Django, Storm , SqlAlchemy ), Ruby on Rails ( ActiveRecord ), Cocoa ( CoreData ) itp.
czyli możesz to zrobić:
źródło
Sequel (Ruby ORM) ma narzędzie wiersza poleceń do obsługi baz danych, musisz mieć zainstalowany Ruby, a następnie:
źródło
gem install mysql
igem install sqlite3
gem install pg
jeśli chcesz konwertować z lub do postgres db, sequel powinien mieć adaptery dla głównych baz danychmysql
zemysql2
jeśli używaszmysql2
ruby-dev
pakiet będzie potrzebny do zbudowania tych natywnych pakietów klejnotów.Nie każdy schemat bazy danych można przekonwertować. MySQL jest bardziej złożony i bogaty w funkcje niż SQLite. Jeśli jednak Twój schemat jest wystarczająco prosty, możesz zrzucić go do pliku SQL i spróbować zaimportować / załadować do bazy danych SQLite.
źródło
Miałem ten sam problem około 2 dni temu, kiedy musiałem przekonwertować bazę danych MySQL 20 GB + na SQLite. Nie było to łatwe zadanie i ostatecznie napisałem ten pakiet Pythona, który spełnia swoje zadanie.
Zaletą pisania w Pythonie jest to, że jest wieloplatformowy (w przeciwieństwie do skryptu powłoki / bash) i można go łatwo zainstalować za pomocą
pip install
(nawet w systemie Windows). Wykorzystuje generatory i fragmenty przetwarzanych danych, dzięki czemu jest bardzo wydajny pod względem pamięci.Włożyłem też trochę wysiłku w poprawne przetłumaczenie większości typów danych z MySQL na SQLite .
Narzędzie jest również dokładnie przetestowane i działa na Pythonie 2.7 i 3.5+ .
Można ją wywołać za pomocą wiersza poleceń, ale można jej również użyć jako standardowej klasy Pythona, którą można dołączyć do większej aranżacji Pythona.
Oto jak go używasz:
źródło
.sql
plikiem zrzutu, czy też wymaga połączenia z zainstalowaną bazą danych MySQL?Sqlite oficjalnie ma listę narzędzi do konwersji.
http://www2.sqlite.org/cvstrac/wiki?p=ConverterTools
źródło
Najprostszy sposób na konwersję MySql DB do Sqlite:
1) Wygeneruj plik zrzutu sql dla swojej bazy danych MySql.
2) Prześlij plik do konwertera online RebaseData tutaj
3) Na stronie pojawi się przycisk pobierania umożliwiający pobranie bazy danych w formacie Sqlite
źródło
Znalazłem idealne rozwiązanie
Najpierw potrzebujesz tego skryptu (umieść go w pliku o nazwie „mysql-to-sqlite.sh”):
Następnie zrzuć kopię swojej bazy danych:
A teraz uruchom konwersję:
A jeśli wszystko pójdzie dobrze, powinieneś mieć teraz plik dumpfile.db, z którego można korzystać przez sqlite3.
źródło
Można to zrobić na różne sposoby. Miałem też ten problem i dużo szukałem, a potem dostałem prosty sposób na konwersję MySQL do SQLite.
Wykonaj następujące kroki:
Najpierw musisz zainstalować przeglądarkę SQLite DB (bardzo mała i szybka do przeglądania tabel i danych)
Otwórz swój plik MySQL w Notatniku lub byłoby wspaniale, gdybyś otworzył w Notepad ++
Usuń pierwsze dodatkowe wiersze zawierające informacje lub zapytania i zapisz je.
Otwórz przeglądarkę SQLite DB, utwórz bazę danych, a następnie tabele i takie same typy, jak w bazie danych MySQL.
W pasku menu przeglądarki SQLite DB wybierz Plik-> następnie Importuj dane Plik MySQL, który zapisałeś.
Po ostrzeżeniu z łatwością przekształci się w SQLite.
Jeśli błąd, usuń więcej dodatkowych linii, jeśli twój plik MySQL ma.
Możesz także zainstalować oprogramowanie MySQL do SQLite Converter na zasadzie próbnej, ale informacje, które podaję do konwersji, to czas życia.
źródło
Moim rozwiązaniem tego problemu na komputerze Mac było
Zainstaluj sequel
Jeśli nadal jest to wymagane
następnie użył następującego na podstawie dokumentu Sequel bin_sequel.rdoc (patrz Kopiowanie bazy danych)
Użytkownik systemu Windows może zainstalować Ruby i Sequel jako rozwiązanie dla systemu Windows.
źródło
Wypróbowałem kilka metod w tym wątku, ale nic nie działało. Oto nowe rozwiązanie, które również okazało się bardzo proste:
sqlite
zapytaniami niezbędnymi do utworzenia tej bazy danych.To wszystko, teraz masz swoją bazę danych SQLite.
źródło
Jeśli masz doświadczenie, pisz proste skrypty przez Perl \ Python \ etc i konwertuj MySQL na SQLite. Odczytaj dane z MySQL i zapisz je w SQLite.
źródło
Podoba mi się SQLite2009 Pro Enterprise Manager sugerowany przez Jfly. Jednak:
Typ danych MySQL INT nie jest konwertowany na typ danych SQlite INTEGER (działa z DBeaver)
Nie importuje ograniczeń klucza obcego z MySQL (nie mogłem znaleźć żadnego narzędzia, które obsługuje transfer ograniczeń klucza obcego z MySQL do SQlite).
źródło
Z listy narzędzi konwertujących znalazłem Kexi . Jest to narzędzie interfejsu użytkownika do importowania z różnych serwerów DB (w tym MySQL) do SQLite. Podczas importowania jakiejś bazy danych (powiedzmy z MySQL) przechowuje ją w formacie Kexi. Format Kexi jest „rodzimym” formatem SQLite. Po prostu skopiuj plik kexi i przechowuj dane w formacie sqlite
źródło
Jeśli otrzymałeś plik bazy danych i nie zainstalowałeś prawidłowego serwera (SQLite lub MySQL), wypróbuj to narzędzie: https://dbconvert.com/sqlite/mysql/ Wersja próbna umożliwia konwersję pierwszych 50 rekordów każdej tabeli pozostałe dane są oznaczone znakiem wodnym. Jest to program systemu Windows, który może wykonać zrzut do działającego serwera bazy danych lub zrzucić dane wyjściowe do pliku .sql
źródło