Yanıtlar:
GitHub'da bir mysql2sqlite.sh betiği var
Başlıkta açıklandığı gibi, komut dosyası şu şekilde kullanılabilir:
./mysql2sqlite.sh myDbase | sqlite3 database.sqlite
alternatifleri
$ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite gist.github.com/943776
man mysqlVeya ile yapılandırmayı öğrenebilirsinizman mysqldump
İşte dönüştürücülerin bir listesi . ( arşiv.today'da anlık görüntü )
Pencerelerde bile çalışabilecek ancak nadiren bahsedilen alternatif bir yöntem şudur: sizin için belirli veritabanı farklılıklarını ortadan kaldıran bir ORM sınıfı kullanın. örneğin bunları PHP ( RedBean ), Python (Django'nun ORM katmanı, Storm , SqlAlchemy ), Ruby on Rails ( ActiveRecord ), Cocoa ( CoreData ) vb.
yani bunu yapabilirsin:
Sequel (Ruby ORM), veritabanları ile uğraşmak için bir komut satırı aracına sahiptir, Ruby'nin kurulu olması gerekir, sonra:
$ gem install sequel mysql2 sqlite3
$ sequel mysql2://user:password@host/database -C sqlite://db.sqlite
gem install mysqlvegem install sqlite3
gem install pgbir postgres db'den veya bir postgres db'ye dönüştürmek istiyorsanız, devamı, büyük db'ler için adaptörlere sahip olmalıdır
mysqlile değiştirinmysql2mysql2
ruby-devBu yerel mücevher paketlerini oluşturmak için pakete ihtiyacınız olacak .
Her DB şeması dönüştürülemez. MySQL, SQLite'den daha karmaşık ve zengin özelliklere sahiptir. Bununla birlikte, şemanız yeterince basitse, onu bir SQL dosyasına dökebilir ve onu bir SQLite DB'ye aktarmayı / yüklemeyi deneyebilirsiniz.
Yaklaşık 2 gün önce, 20GB + MySQL veritabanını SQLite'a dönüştürmek zorunda kaldığımda aynı problemle karşılaştım. Bu hiçbir şekilde kolay bir görev değildi ve işi yapan bu Python paketini yazdım .
Python'da yazılmasının iyi yanı, çapraz platform olması (bir kabuk / bash betiğinin aksine) ve tümü kullanılarak pip install(Windows'ta bile) kolayca kurulabilir olmasıdır . Üreteçleri ve işlenmekte olan verilerin yığınlarını kullanır ve bu nedenle bellek açısından çok verimlidir.
Ayrıca , veri türlerinin çoğunu MySQL'den SQLite'a doğru şekilde çevirmek için biraz çaba sarf ettim .
Araç ayrıca kapsamlı bir şekilde test edilmiştir ve Python 2.7 ve 3.5+ üzerinde çalışır .
Komut satırı aracılığıyla çağrılabilir, ancak bazı daha büyük Python düzenlemelerine dahil edebileceğiniz standart bir Python sınıfı olarak da kullanılabilir.
İşte bunu nasıl kullanacağınız:
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.
.sqldöküm dosyasıyla çalışmasının bir yolu var mı veya kurulu bir MySQL veritabanına bağlantı gerektiriyor mu?
Sqlite resmi olarak dönüştürme araçları listesine sahiptir.
MySql DB'yi Sqlite'a dönüştürmenin en basit yolu:
1) MySql veritabanınız için sql döküm dosyası oluşturun.
2) Dosyayı RebaseData çevrimiçi dönüştürücüye buradan yükleyin
3) Veritabanını Sqlite formatında indirmek için sayfada bir indirme düğmesi görünecektir.
Mükemmel çözümü buldum
Öncelikle, bu betiğe ihtiyacınız var ('mysql-to-sqlite.sh' adlı bir dosyaya koyun):
#!/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
Ardından, veritabanınızın bir kopyasını alın:
you@prompt:~$ mysqldump -u root -p --compatible=ansi --skip-opt generator > dumpfile
Ve şimdi dönüşümü çalıştırın:
you@prompt:~$ mysql-to-sqlite.sh dumpfile
Ve her şey yolunda giderse, artık sqlite3 aracılığıyla kullanılabilen bir dumpfile.db'ye sahip olmalısınız.
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
Bunu yapmanın farklı yolları var. Ben de bu problemi yaşadım ve çok araştırdım ve sonra MySQL'i SQLite'a dönüştürmenin basit bir yolunu buldum.
Bu adımları takip et:
Önce SQLite DB Tarayıcısını Kurmanız Gerekiyor (Tabloları ve Verileri görüntülemek için çok küçük ve hızlı)
MySQL Dosyanızı Not Defteri'nde açın, yoksa Notepad ++ ile açarsanız harika olur
İlk Ekstra Satırları Kaldır, Bilgi veya Sorgu İçerir ve Kaydedin.
MySQL Veritabanında olduğu gibi SQLite DB Tarayıcısını, Veritabanı Oluştur, ardından Tabloları ve Aynı Türleri açın.
SQLite DB Browser Menü Çubuğunda File-> öğesini seçin ve ardından kaydettiğiniz MySQL Dosyasını içe aktar öğesini seçin.
Uyarı Sonrası İletişim Kutusuna kolayca SQLite dönüştürülür.
Hata varsa, MySQL dosyanızda varsa daha fazla satırı kaldırın.
Ayrıca MySQL'den SQLite Converter Yazılımına deneme bazında da yükleyebilirsiniz, ancak dönüştürme için verdiğim bilgiler ömür boyu.
Mac çalıştıran bu soruna çözümüm ,
Devamı yükleyin
$ gem install sequel
Hala gerekliyse
% gem install mysql sqlite3
daha sonra Sequel doc bin_sequel.rdoc'a dayalı olarak aşağıdakileri kullandı (bkz. Veritabanını Kopyalama)
sequel -C mysql://myUserName:myPassword@host/databaseName sqlite://myConvertedDatabaseName.sqliteBir Windows kullanıcısı, bir Windows çözümü için Ruby ve Sequel'i kurabilir.
Bu konu üzerinde bir dizi yöntem denedim, ancak hiçbir şey benim için işe yaramadı. İşte burada çok basit bulduğum yeni bir çözüm:
sqlitebu veritabanını oluşturmak için gerekli tüm sorguları içeren bir txt dosyasını kaydedecektir .İşte bu, artık SQLite veritabanınız var.
Jfly tarafından önerilen SQLite2009 Pro Enterprise Manager'ı beğendim. Ancak:
MySQL veri türü INT, SQlite veri türü INTEGER'a dönüştürülmez (DBeaver ile çalışır)
MySQL'den yabancı anahtar kısıtlamalarını içe aktarmıyor (Yabancı anahtar kısıtlamalarının MySQL'den SQlite'a aktarılmasını destekleyen herhangi bir araç bulamadım.)
Gönderen dönüştürücü araçlar listesinin buldum kexi . Çeşitli DB sunucularından (MySQL dahil) SQLite'a aktarmak için bir UI aracıdır. Bazı veritabanlarını içe aktarırken (örneğin MySQL'den) Kexi formatında depolar. Kexi formatı 'yerel' SQLite formatıdır. Yani basitçe kexi dosyasını kopyalayın ve verilerinizi sqlite formatında alın
Bir veritabanı dosyası verilmişse ve doğru sunucuyu (SQLite veya MySQL) yüklemediyseniz, bu aracı deneyin: https://dbconvert.com/sqlite/mysql/ Deneme sürümü her tablonun ilk 50 kaydını dönüştürmeye izin verir , verilerin geri kalanı filigranlıdır. Bu bir Windows programıdır ve çalışan bir veritabanı sunucusuna döküm yapabilir veya çıktıyı bir .sql dosyasına dökebilir