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:
./mysql2sqlite.sh myDbase | sqlite3 database.sqlite
alternatywy
$ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite
gist.github.com/943776
man 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ć:
Sequel (Ruby ORM) ma narzędzie wiersza poleceń do obsługi baz danych, musisz mieć zainstalowany Ruby, a następnie:
$ gem install sequel mysql2 sqlite3
$ sequel mysql2://user:password@host/database -C sqlite://db.sqlite
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 danych
mysql
ze mysql2
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.
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:
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 SQLite
database file, repacking it into a minimal amount
of disk space
--use-buffered-cursors Use MySQLCursorBuffered for reading the MySQL
database. 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.
.sql
plikiem zrzutu, czy też wymaga połączenia z zainstalowaną bazą danych MySQL?
Sqlite oficjalnie ma listę narzędzi do konwersji.
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
Znalazłem idealne rozwiązanie
Najpierw potrzebujesz tego skryptu (umieść go w pliku o nazwie „mysql-to-sqlite.sh”):
#!/bin/bash
if [ "x$1" == "x" ]; then
echo "Usage: $0 <dumpname>"
exit
fi
cat $1 |
grep -v ' KEY "' |
grep -v ' UNIQUE KEY "' |
grep -v ' PRIMARY KEY ' |
sed '/^SET/d' |
sed 's/ unsigned / /g' |
sed 's/ auto_increment/ primary key autoincrement/g' |
sed 's/ smallint([0-9]*) / integer /g' |
sed 's/ tinyint([0-9]*) / integer /g' |
sed 's/ int([0-9]*) / integer /g' |
sed 's/ character set [^ ]* / /g' |
sed 's/ enum([^)]*) / varchar(255) /g' |
sed 's/ on update [^,]*//g' |
sed 's/\\r\\n/\\n/g' |
sed 's/\\"/"/g' |
perl -e 'local $/;$_=<>;s/,\n\)/\n\)/gs;print "begin;\n";print;print "commit;\n"' |
perl -pe '
if (/^(INSERT.+?)\(/) {
$a=$1;
s/\\'\''/'\'\''/g;
s/\\n/\n/g;
s/\),\(/\);\n$a\(/g;
}
' > $1.sql
cat $1.sql | sqlite3 $1.db > $1.err
ERRORS=`cat $1.err | wc -l`
if [ $ERRORS == 0 ]; then
echo "Conversion completed without error. Output file: $1.db"
rm $1.sql
rm $1.err
else
echo "There were errors during conversion. Please review $1.err and $1.sql for details."
fi
Następnie zrzuć kopię swojej bazy danych:
you@prompt:~$ mysqldump -u root -p --compatible=ansi --skip-opt generator > dumpfile
A teraz uruchom konwersję:
you@prompt:~$ mysql-to-sqlite.sh dumpfile
A jeśli wszystko pójdzie dobrze, powinieneś mieć teraz plik dumpfile.db, z którego można korzystać przez sqlite3.
you@prompt:~$ sqlite3 dumpfile.db
SQLite version 3.6.10
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
dg_cities dg_forms dg_surnames
dg_counties dg_provinces dg_user_accounts
dg_countries dg_provinces_netherlands
dg_first_names dg_states
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.
Moim rozwiązaniem tego problemu na komputerze Mac było
Zainstaluj sequel
$ gem install sequel
Jeśli nadal jest to wymagane
% gem install mysql sqlite3
następnie użył następującego na podstawie dokumentu Sequel bin_sequel.rdoc (patrz Kopiowanie bazy danych)
sequel -C mysql://myUserName:myPassword@host/databaseName sqlite://myConvertedDatabaseName.sqlite
Użytkownik systemu Windows może zainstalować Ruby i Sequel jako rozwiązanie dla systemu Windows.
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.
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