Jawaban:
Ada skrip mysql2sqlite.sh di GitHub
Seperti yang dijelaskan di tajuk, skrip dapat digunakan seperti ini:
./mysql2sqlite.sh myDbase | sqlite3 database.sqlite
alternatif
$ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite
gist.github.com/943776
man mysql
atauman mysqldump
Berikut adalah daftar konverter . ( snapshot di archive.today )
Metode alternatif yang akan bekerja bahkan di windows tetapi jarang disebutkan adalah: gunakan kelas ORM yang mengabstraksi perbedaan database tertentu untuk Anda. misalnya Anda mendapatkan ini dalam PHP ( RedBean ), Python (lapisan ORM Django, Storm , SqlAlchemy ), Ruby on Rails ( ActiveRecord ), Cocoa ( CoreData ) dll.
yaitu Anda bisa melakukan ini:
Sequel (Ruby ORM) memiliki alat baris perintah untuk menangani database, Anda harus menginstal ruby, lalu:
$ gem install sequel mysql2 sqlite3
$ sequel mysql2://user:password@host/database -C sqlite://db.sqlite
gem install mysql
dangem install sqlite3
gem install pg
jika Anda ingin mengubah dari atau ke db postgres, sekuel harus memiliki adaptor untuk db mayor
mysql
dengan mysql2
jika Anda menggunakanmysql2
ruby-dev
paket untuk membuat paket permata asli ini.
Tidak semua skema DB dapat dikonversi. MySQL lebih kompleks dan kaya fitur daripada SQLite. Namun, jika skema Anda cukup sederhana, Anda dapat memasukkannya ke dalam file SQL dan mencoba mengimpor / memuatnya ke SQLite DB.
Saya menghadapi masalah yang sama sekitar 2 hari yang lalu ketika saya harus mengubah database MySQL 20GB + ke SQLite. Itu bukan tugas yang mudah dan saya akhirnya menulis paket Python ini yang melakukan pekerjaan itu.
Sisi positifnya ditulis dengan Python adalah bahwa itu lintas platform (tidak seperti skrip shell / bash) dan semuanya dapat dengan mudah diinstal menggunakan pip install
(bahkan di Windows). Ini menggunakan generator dan chunking data yang sedang diproses dan oleh karena itu sangat efisien dalam memori.
Saya juga berusaha untuk menerjemahkan dengan benar sebagian besar tipe data dari MySQL ke SQLite .
Alat ini juga diuji secara menyeluruh dan berfungsi pada Python 2.7 dan 3.5+ .
Ini dapat dipanggil melalui baris perintah tetapi juga dapat digunakan sebagai kelas Python standar yang dapat Anda sertakan dalam beberapa orkestrasi Python yang lebih besar.
Inilah cara Anda menggunakannya:
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
file dump atau apakah itu memerlukan koneksi ke database MySQL yang diinstal?
Sqlite secara resmi memiliki daftar alat konversi.
Cara termudah untuk Mengonversi MySql DB ke Sqlite:
1) Buat file dump sql untuk Anda database MySql.
2) Unggah file ke konverter online RebaseData di sini
3) Tombol unduh akan muncul di halaman untuk mengunduh database dalam format Sqlite
Saya menemukan solusi yang tepat
Pertama, Anda memerlukan skrip ini (masukkan ke dalam file bernama '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
Kemudian, buang salinan database Anda:
you@prompt:~$ mysqldump -u root -p --compatible=ansi --skip-opt generator > dumpfile
Dan sekarang, jalankan konversi:
you@prompt:~$ mysql-to-sqlite.sh dumpfile
Dan jika semuanya berjalan dengan baik, Anda sekarang harus memiliki dumpfile.db yang dapat digunakan melalui 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
Ada berbagai cara untuk melakukan ini. Saya juga mengalami masalah ini dan saya banyak mencari dan kemudian saya mendapat cara sederhana untuk mengonversi MySQL ke SQLite.
Ikuti langkah ini:
Pertama, Anda Perlu Menginstal SQLite DB Browser (sangat kecil dan cepat untuk melihat Tabel dan Data)
Buka File MySQL Anda di Notepad atau akan lebih bagus jika Anda membuka di Notepad ++
Hapus Baris Ekstra Pertama Berisi Informasi atau Kueri dan Simpan.
Buka SQLite DB Browser, Buat Database, lalu Tabel, dan Jenis yang Sama seperti di Database MySQL.
Di Menu Bar SQLite DB Browser Pilih File-> kemudian Impor data File MySQL yang Anda simpan.
Ini akan dengan mudah diubah menjadi SQLite Setelah Dialog Peringatan.
Jika kesalahan maka hapus lebih banyak baris tambahan jika file MySQL Anda memiliki.
Anda juga dapat Menginstal Perangkat Lunak MySQL ke SQLite Converter pada percobaan Basis, tetapi informasi yang saya berikan untuk konversi adalah seumur hidup.
Solusi saya untuk masalah ini menjalankan Mac adalah dengan
Pasang sekuel
$ gem install sequel
Jika masih dibutuhkan
% gem install mysql sqlite3
kemudian gunakan yang berikut ini berdasarkan Sekuel doc bin_sequel.rdoc (lihat Salin Database)
sequel -C mysql://myUserName:myPassword@host/databaseName sqlite://myConvertedDatabaseName.sqlite
Seorang pengguna windows dapat menginstal Ruby dan Sequel untuk solusi windows.
Saya mencoba sejumlah metode di utas ini, tetapi tidak ada yang berhasil untuk saya. Jadi, inilah solusi baru, yang menurut saya sangat sederhana:
sqlite
query yang diperlukan untuk membuat database ini.Itu saja, sekarang Anda memiliki database SQLite Anda.
Saya suka SQLite2009 Pro Enterprise Manager yang disarankan oleh Jfly. Namun:
Tipe data MySQL INT tidak diubah ke tipe data SQlite INTEGER (bekerja dengan DBeaver)
Itu tidak mengimpor batasan kunci asing dari MySQL (saya tidak dapat menemukan alat apa pun yang mendukung transfer batasan kunci asing dari MySQL ke SQlite.)
Dari daftar alat konverter saya menemukan Kexi . Ini adalah alat UI untuk mengimpor dari berbagai server DB (termasuk MySQL) ke SQLite. Saat mengimpor beberapa database (katakanlah dari MySQL), ia menyimpannya dalam format Kexi. Format Kexi adalah format SQLite 'asli'. Jadi cukup salin file kexi dan miliki data Anda dalam format sqlite
Jika Anda telah diberi file database dan belum menginstal server yang benar (baik SQLite atau MySQL), coba alat ini: https://dbconvert.com/sqlite/mysql/ Versi trial memungkinkan konversi 50 record pertama dari setiap tabel , data lainnya diberi watermark. Ini adalah program Windows, dan dapat dibuang ke server database yang sedang berjalan, atau dapat membuang keluaran ke file .sql