Bekerja sebagai pesona! Ini sedikit dokumentasinya: $ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlitegist.github.com/943776
kachar
Skrip hanya menarik argumen dari baris perintah dan meneruskannya ke mysqldump, sehingga Anda dapat mengetahui tentang konfigurasi port khusus, dll. Dengan man mysqlatauman mysqldump
Lebih baik lagi untuk bermain dengan karakter non-ascii: $. / Mysql2sqlite.sh --default-character-set = utf8 -hHost -uUser -pPass db | sqlite3 db.sqlite gist.github.com/esperlu/943776#gistcomment-984448
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:
Muat data dari database sumber menggunakan kelas ORM.
Simpan data dalam memori atau buat serial ke disk.
Menyimpan data ke dalam database tujuan menggunakan kelas ORM.
dan gem install pgjika Anda ingin mengubah dari atau ke db postgres, sekuel harus memiliki adaptor untuk db mayor
Macario
2
ganti mysqldengan mysql2jika Anda menggunakanmysql2
Carlosin
1
Catatan: Anda memerlukan ruby-devpaket untuk membuat paket permata asli ini.
Panda
1
Harus menggunakan "gem install sequel mysql2 sqlite3" dan kemudian "sequel mysql2: // user: password @ host / database -C sqlite: //db.sqlite" PERFECT
unom
17
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.
Setelah membuang database MySQL Anda ke sebuah file, Anda dapat menggunakan skrip ini untuk mengubahnya menjadi SQLite github.com/dumblob/mysql2sqlite (seperti yang disebutkan dalam jawaban @David_LeBauer).
Paul Rougieux
7
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.
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 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.
Hai @techouse, ini terlihat bagus! Apakah ada cara itu bisa bekerja dengan .sqlfile dump atau apakah itu memerlukan koneksi ke database MySQL yang diinstal?
vortek
Hei! Ummm, tidak, ini membutuhkan database MySQL yang berfungsi. Jika Anda memiliki dump tanpa server yang sebenarnya, taruhan terbaik Anda adalah mengubah file secara manual jika Anda tahu apa yang Anda lakukan.
Klemen Tušar
@arkadianriver Saya sarankan Anda selalu menggunakan lingkungan virtual dengan Python 😎
Klemen Tušar
5
Sqlite secara resmi memiliki daftar alat konversi.
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.
Ini berfungsi dengan baik jika data Anda tidak memiliki karakter seperti apostrof. Misalnya "Ini adalah buku Peter" di sql dumb akan menjadi 'Ini adalah buku Peter'. Ini akan membuat DB Browser membuang error, karena data yang besar sulit untuk dihapus. Tetapi jika Anda mengimpor data dari phpAdmin sebagai CSV ke DB Browser, pengimporan itu akan berhasil. Saya harap bantuan ini
Seunope
1
Solusi saya untuk masalah ini menjalankan Mac adalah dengan
Bagaimana saya dapat menyalin hanya satu tabel dari DB bukan seluruh database mysql?
Atul Vaibhav
Untuk satu meja di masa lalu saya telah melakukan ini, tetapi mungkin ada cara yang lebih baik. Ekspor tabel sebagai csv dengan nama kolom di opsi baris pertama dicentang. Kemudian menggunakan DB Browser untuk SQLite, impor tabel ke database sqlite saya yang ada menggunakan opsi impor tabel dari csv. Anda kemudian mungkin harus masuk dan mengubah bidang ke jenis yang Anda butuhkan karena saya yakin semua bidang akan diatur ke TEXT. Dalam proyek yang saya kerjakan meskipun kami mengembangkan proses, kami membuat panggilan api untuk mengembalikan semua data dalam tabel dan kemudian memasukkan / mengganti data dalam database aplikasi.
Grant Luck
Sepertinya berhasil. Meskipun demikian, saya tidak dapat menemukan di mana file outputnya. Bisakah kamu membantuku?
Pontios
1
Saya mencoba sejumlah metode di utas ini, tetapi tidak ada yang berhasil untuk saya. Jadi, inilah solusi baru, yang menurut saya sangat sederhana:
Instal RazorSQL . Bekerja untuk Mac, Windows dan Linux.
Di RazorSQL, sambungkan ke database Anda, di localhost misalnya. Konversi tidak bekerja dengan file sql dump.
Klik kanan pada database Anda -> Konversi Database -> pilih SQLite. Ini akan menyimpan file txt dengan semua sqlitequery yang diperlukan untuk membuat database ini.
Instal pengelola database SQLite, seperti DB Browser for SQLite . Ini berfungsi di OS apa pun.
Buat database kosong, buka tab Jalankan SQL dan tempel konten dari langkah 3.
Itu saja, sekarang Anda memiliki database SQLite Anda.
RazorSQL tampaknya hanya membangun file "umum" * .sql dengan definisi tabel dan data yang dimasukkan ke dalam tetapi tidak ada yang khusus SQLite. Itu tidak mengekspor Views yang merupakan minus besar. Klien mysqldump yang hadir dengan tampilan ekspor MySql juga tetapi juga menghasilkan banyak hal bersyarat, dll. Apa yang tidak akan dicerna oleh SQLite.
dalilander
0
Jika Anda memiliki pengalaman, tulis skrip sederhana dengan Perl \ Python \ etc, dan konversikan MySQL ke SQLite. Baca data dari Mysql dan tulis di SQLite.
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
Jawaban:
Ada skrip mysql2sqlite.sh di GitHub
Seperti yang dijelaskan di tajuk, skrip dapat digunakan seperti ini:
alternatif
sumber
$ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite
gist.github.com/943776man 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:
sumber
Sequel (Ruby ORM) memiliki alat baris perintah untuk menangani database, Anda harus menginstal ruby, lalu:
sumber
gem install mysql
dangem install sqlite3
gem install pg
jika Anda ingin mengubah dari atau ke db postgres, sekuel harus memiliki adaptor untuk db mayormysql
denganmysql2
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.
sumber
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:
sumber
.sql
file dump atau apakah itu memerlukan koneksi ke database MySQL yang diinstal?Sqlite secara resmi memiliki daftar alat konversi.
http://www2.sqlite.org/cvstrac/wiki?p=ConverterTools
sumber
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
sumber
Saya menemukan solusi yang tepat
Pertama, Anda memerlukan skrip ini (masukkan ke dalam file bernama 'mysql-to-sqlite.sh'):
Kemudian, buang salinan database Anda:
Dan sekarang, jalankan konversi:
Dan jika semuanya berjalan dengan baik, Anda sekarang harus memiliki dumpfile.db yang dapat digunakan melalui sqlite3.
sumber
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.
sumber
Solusi saya untuk masalah ini menjalankan Mac adalah dengan
Pasang sekuel
Jika masih dibutuhkan
kemudian gunakan yang berikut ini berdasarkan Sekuel doc bin_sequel.rdoc (lihat Salin Database)
Seorang pengguna windows dapat menginstal Ruby dan Sequel untuk solusi windows.
sumber
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.
sumber
Jika Anda memiliki pengalaman, tulis skrip sederhana dengan Perl \ Python \ etc, dan konversikan MySQL ke SQLite. Baca data dari Mysql dan tulis di SQLite.
sumber
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.)
sumber
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
sumber
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
sumber