जवाबों:
GitHub पर एक mysql2sqlite.sh स्क्रिप्ट है
जैसा कि हेडर में वर्णित है, स्क्रिप्ट का उपयोग इस तरह किया जा सकता है:
./mysql2sqlite.sh myDbase | sqlite3 database.sqlite
विकल्प
$ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite
gist.github.com/943776
man mysql
याman mysqldump
यहाँ कन्वर्टर्स की एक सूची दी गई है । ( संग्रहलेख पर स्नैपशॉट )
एक वैकल्पिक विधि जो खिड़कियों पर भी काम करेगी लेकिन शायद ही कभी इसका उल्लेख किया जाता है: एक ORM वर्ग का उपयोग करें जो विशिष्ट डेटाबेस अंतरों को आपके लिए दूर करता है। जैसे आप PHP ( RedBean ), Python (Django की ORM लेयर, Storm , SqlAlchemy ), Ruby on Rails ( ActiveRecord ), Cocoa ( CoreData ) आदि में इन्हें प्राप्त करते हैं ।
यानी आप ऐसा कर सकते हैं:
सीक्वल (रूबी ओआरएम) में डेटाबेस से निपटने के लिए एक कमांड लाइन उपकरण है, आपके पास माणिक स्थापित होना चाहिए, फिर:
$ gem install sequel mysql2 sqlite3
$ sequel mysql2://user:password@host/database -C sqlite://db.sqlite
gem install mysql
औरgem install sqlite3
gem install pg
यदि आप किसी पोस्टग्रेजन डीबी से या उससे कन्वर्ट करना चाहते हैं, तो सीक्वल में प्रमुख डीबी के लिए एडेप्टर होना चाहिए
mysql
के साथ mysql2
करता है, तो आप उपयोग कर रहेmysql2
ruby-dev
इन मूल मणि पैकेजों के निर्माण के लिए पैकेज की आवश्यकता होगी ।
प्रत्येक DB स्कीमा को परिवर्तित नहीं किया जा सकता है। MySQL SQLite से अधिक जटिल और सुविधा संपन्न है। हालाँकि, यदि आपका स्कीमा पर्याप्त सरल है, तो आप इसे SQL फ़ाइल में डंप कर सकते हैं और इसे आयात करने का प्रयास कर सकते हैं / SQLite DB में लोड कर सकते हैं।
मुझे लगभग 2 दिन पहले इसी समस्या का सामना करना पड़ा था जब मुझे 20GB + MySQL डेटाबेस को SQLite में बदलना पड़ा था। यह कोई आसान काम नहीं था और मैंने यह पायथन पैकेज लिखना शुरू कर दिया जो काम करता है।
पायथन में लिखा जा रहा है इसका उल्टा है कि यह क्रॉस प्लेटफॉर्म (शेल / बैश स्क्रिप्ट के विपरीत) है और सभी को आसानी से pip install
(यहां तक कि विंडोज पर) का उपयोग करके स्थापित किया जा सकता है । यह संसाधित किए जा रहे डेटा के जनरेटर और चैंकिंग का उपयोग करता है और इसलिए यह बहुत ही मेमोरी कुशल है।
मैंने MySQL से SQLite में अधिकांश डेटाटाइप को सही ढंग से अनुवाद करने के लिए कुछ प्रयास किए ।
टूल का भी पूरी तरह से परीक्षण किया गया है और पायथन 2.7 और 3.5+ पर काम करता है ।
यह कमांड लाइन के माध्यम से अमूल्य है, लेकिन इसे मानक पायथन वर्ग के रूप में भी इस्तेमाल किया जा सकता है जिसे आप कुछ बड़े पायथन ऑर्केस्ट्रेशन में शामिल कर सकते हैं।
यहां बताया गया है कि आप इसका उपयोग कैसे करते हैं:
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
डंप फ़ाइल के साथ काम कर सकता है या यह एक स्थापित MySQL डेटाबेस से कनेक्शन की आवश्यकता है?
सकलाइट के पास आधिकारिक रूप से परिवर्तित उपकरणों की सूची है।
मुझे इसका सही समाधान मिला
सबसे पहले, आपको यह स्क्रिप्ट चाहिए (इसे '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
फिर, अपने डेटाबेस की एक प्रति डंप करें:
you@prompt:~$ mysqldump -u root -p --compatible=ansi --skip-opt generator > dumpfile
और अब, रूपांतरण चलाएँ:
you@prompt:~$ mysql-to-sqlite.sh dumpfile
और अगर सब ठीक हो जाता है, तो अब आपके पास एक डंपफाइल। डीबी होनी चाहिए जिसका उपयोग 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
ऐसा करने के लिए अलग-अलग तरीके हैं। मुझे भी यह समस्या थी और मैंने बहुत खोज की और फिर मुझे MySQL को SQLite में बदलने का एक सरल तरीका मिल गया।
इन कदमों का अनुसरण करें:
पहले आपको SQLite DB ब्राउज़र स्थापित करने की आवश्यकता है (तालिकाएँ और डेटा देखने के लिए बहुत छोटा और तेज़)
नोटपैड में अपनी MySQL फाइल खोलें या यदि आप नोटपैड ++ में खोलें तो बहुत अच्छा होगा
पहले अतिरिक्त पंक्तियों को निकालें जिसमें जानकारी या क्वेरीज़ हैं और इसे सहेजें।
SQLite DB ब्राउज़र खोलें, डेटाबेस बनाएँ, तब टेबल्स, और समान प्रकार जैसे यह MySQL डेटाबेस में है।
SQLite DB ब्राउजर के मेनू बार में File-> फिर डेटा MySQL फ़ाइल आयात करें जिसे आपने सहेजा है।
यह आसानी से चेतावनी डायलॉग के बाद SQLite में परिवर्तित हो जाएगा।
यदि त्रुटि है तो अधिक अतिरिक्त लाइनों को हटा दें यदि आपकी MySQL फ़ाइल है।
ट्रायल बेसिस पर आप MySQL को SQLite कन्वर्टर सॉफ्टवेयर में भी इंस्टॉल कर सकते हैं, लेकिन रूपांतरण के लिए मैं जो जानकारी दे रहा हूं वह लाइफ टाइम है।
एक मैक चल रहा था इस मुद्दे के लिए मेरा समाधान था
अगली कड़ी स्थापित करें
$ gem install sequel
अगर अभी भी आवश्यकता है
% gem install mysql sqlite3
फिर Sequel doc bin_fterel.rdoc के आधार पर निम्नलिखित का उपयोग करें (प्रतिलिपि डेटाबेस देखें)
sequel -C mysql://myUserName:myPassword@host/databaseName sqlite://myConvertedDatabaseName.sqlite
विंडोज़ समाधान के लिए एक विंडोज़ उपयोगकर्ता रूबी और सीक्वल स्थापित कर सकता है।
मैंने इस धागे पर कई तरीकों की कोशिश की, लेकिन मेरे लिए कुछ भी काम नहीं किया। तो यहाँ एक नया समाधान है, जिसे मैंने बहुत सरल भी पाया है:
sqlite
इस डेटाबेस को बनाने के लिए आवश्यक सभी प्रश्नों के साथ एक txt फ़ाइल को बचाएगा ।बस, अब आपके पास अपना SQLite डेटाबेस है।
मैं Jfly द्वारा सुझाए गए SQLite2009 प्रो एंटरप्राइज मैनेजर को पसंद करता हूं। तथापि:
MySQL datatype INT SQlite डेटाटाइप INTEGER (DBeaver के साथ काम करता है) में परिवर्तित नहीं होता है
यह MySQL से विदेशी कुंजी बाधाओं को आयात नहीं करता है (मुझे ऐसा कोई उपकरण नहीं मिला जो MySQL से SQlite में विदेशी कुंजी बाधाओं के हस्तांतरण का समर्थन करता है।)
से कनवर्टर उपकरणों की सूची मैंने पाया केएक्साई । यह यूबी टूल है जो विभिन्न DB सर्वरों (MySQL सहित) को SQLite में आयात करता है। जब कुछ डेटाबेस (MySQL से कहते हैं) आयात करते हैं तो इसे केक्सी प्रारूप में संग्रहीत करता है। Kexi प्रारूप 'मूल' SQLite प्रारूप है। तो बस केक्सी फ़ाइल को कॉपी करें और अपने डेटा को साइक्लाइट प्रारूप में रखें
यदि आपको एक डेटाबेस फ़ाइल दी गई है और सही सर्वर (या तो SQLite या MySQL) स्थापित नहीं किया है, तो इस टूल को आज़माएँ: https://dbconvert.com/sqlite/mysql/ परीक्षण संस्करण प्रत्येक तालिका के पहले 50 रिकॉर्ड को बदलने की अनुमति देता है बाकी डेटा वॉटरमार्क है। यह एक विंडोज प्रोग्राम है, और या तो एक रनिंग डेटाबेस सर्वर में डंप हो सकता है, या आउटपुट को .sql फाइल में डंप कर सकता है