MySQL को SQlite में परिवर्तित करें [बंद]


120

क्या विंडोज़ पर मुफ्त टूल के साथ MySQL से SQLite में बदलना संभव है?


जवाबों:


78

GitHub पर एक mysql2sqlite.sh स्क्रिप्ट है

जैसा कि हेडर में वर्णित है, स्क्रिप्ट का उपयोग इस तरह किया जा सकता है:

./mysql2sqlite.sh myDbase | sqlite3 database.sqlite

विकल्प


8
आकर्षण के रूप में काम करता है! यहाँ प्रलेखन का एक सा है: $ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite gist.github.com/943776
kachar

स्क्रिप्ट बस कमांड लाइन से तर्कों को खींचती है और उन्हें mysqldump पर भेजती है, इसलिए आप कस्टम पोर्ट्स को कॉन्फ़िगर करने के बारे में पता लगा सकते हैं, आदि के साथ man mysqlयाman mysqldump
Devin Howard

2
यह ध्यान देने योग्य है कि इस स्क्रिप्ट को एक उत्तराधिकारी ने यहां बनाए रखा है: github.com/dumblob/mysql2sqlite
drzax

गैर-एससीआई पात्रों के साथ खेलने के लिए और भी बेहतर: $। / Mysql2sqlite.sh --default-character-set = utf8 -hHost -uUser -pPass db | sqlite3 db.sqlite gist.github.com/esperlu/943776#gistcomment-984448
सूर्य

52

यहाँ कन्वर्टर्स की एक सूची दी गई है । ( संग्रहलेख पर स्नैपशॉट )


एक वैकल्पिक विधि जो खिड़कियों पर भी काम करेगी लेकिन शायद ही कभी इसका उल्लेख किया जाता है: एक ORM वर्ग का उपयोग करें जो विशिष्ट डेटाबेस अंतरों को आपके लिए दूर करता है। जैसे आप PHP ( RedBean ), Python (Django की ORM लेयर, Storm , SqlAlchemy ), Ruby on Rails ( ActiveRecord ), Cocoa ( CoreData ) आदि में इन्हें प्राप्त करते हैं ।

यानी आप ऐसा कर सकते हैं:

  1. ORM वर्ग का उपयोग करके स्रोत डेटाबेस से डेटा लोड करें।
  2. मेमोरी में डेटा स्टोर करें या डिस्क पर क्रमबद्ध करें।
  3. ORM वर्ग का उपयोग करके डेटा को गंतव्य डेटाबेस में संग्रहीत करें।

43

सीक्वल (रूबी ओआरएम) में डेटाबेस से निपटने के लिए एक कमांड लाइन उपकरण है, आपके पास माणिक स्थापित होना चाहिए, फिर:

  $ gem install sequel mysql2 sqlite3 
  $ sequel mysql2://user:password@host/database -C sqlite://db.sqlite

1
मत भूलो gem install mysqlऔरgem install sqlite3
निक

1
और gem install pgयदि आप किसी पोस्टग्रेजन डीबी से या उससे कन्वर्ट करना चाहते हैं, तो सीक्वल में प्रमुख डीबी के लिए एडेप्टर होना चाहिए
Macario

2
की जगह mysqlके साथ mysql2करता है, तो आप उपयोग कर रहेmysql2
Carlosin

1
नोट: आपको ruby-devइन मूल मणि पैकेजों के निर्माण के लिए पैकेज की आवश्यकता होगी ।
पांडा

1
"मणि इंस्टॉल सीक्वल mysql2 sqlite3" का उपयोग करना था और फिर "अगली कड़ी mysql2: // उपयोगकर्ता: पासवर्ड @ होस्ट / डेटाबेस -C sqlite: //db.sqlite" PERFECT
ung

17

प्रत्येक DB स्कीमा को परिवर्तित नहीं किया जा सकता है। MySQL SQLite से अधिक जटिल और सुविधा संपन्न है। हालाँकि, यदि आपका स्कीमा पर्याप्त सरल है, तो आप इसे SQL फ़ाइल में डंप कर सकते हैं और इसे आयात करने का प्रयास कर सकते हैं / SQLite DB में लोड कर सकते हैं।


अपने MySQL डेटाबेस को किसी फ़ाइल में डंप करने के बाद, आप इस स्क्रिप्ट का उपयोग SQLite github.com/dumblob/mysql2sqlite (@David_LeBauer के उत्तर में उल्लिखित) में बदलने के लिए कर सकते हैं ।
पॉल रूजियक्स

7

मुझे लगभग 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.

1
हे @techouse, यह बहुत अच्छा लग रहा है! वहाँ किसी भी तरह से यह एक .sqlडंप फ़ाइल के साथ काम कर सकता है या यह एक स्थापित MySQL डेटाबेस से कनेक्शन की आवश्यकता है?
vortek

अरे! उम्म, यह नहीं लिए एक काम करने वाले MySQL डेटाबेस की आवश्यकता है। यदि आपके पास एक वास्तविक सर्वर के बिना एक डंप है तो आपकी सबसे अच्छी शर्त है कि यदि आप जानते हैं कि आप क्या कर रहे हैं, तो फ़ाइल को मैन्युअल रूप से बदलना है ।
क्लेमेन तुषार

@arkadianriver मेरा सुझाव है कि आप हमेशा पायथॉन के साथ आभासी वातावरण का उपयोग करें I
क्लेमेन तुषार


4

MySql DB को Sqlite में बदलने का सबसे सरल तरीका:

1) आप MySql डेटाबेस के लिए sql डंप फ़ाइल जनरेट करें।

2) फ़ाइल को RebaseData ऑनलाइन कन्वर्टर के यहाँ अपलोड करें

3) Sqlite प्रारूप में डेटाबेस डाउनलोड करने के लिए पेज पर एक डाउनलोड बटन दिखाई देगा


4

मुझे इसका सही समाधान मिला

सबसे पहले, आपको यह स्क्रिप्ट चाहिए (इसे '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

3

ऐसा करने के लिए अलग-अलग तरीके हैं। मुझे भी यह समस्या थी और मैंने बहुत खोज की और फिर मुझे MySQL को SQLite में बदलने का एक सरल तरीका मिल गया।

इन कदमों का अनुसरण करें:

  1. पहले आपको SQLite DB ब्राउज़र स्थापित करने की आवश्यकता है (तालिकाएँ और डेटा देखने के लिए बहुत छोटा और तेज़)

  2. नोटपैड में अपनी MySQL फाइल खोलें या यदि आप नोटपैड ++ में खोलें तो बहुत अच्छा होगा

  3. पहले अतिरिक्त पंक्तियों को निकालें जिसमें जानकारी या क्वेरीज़ हैं और इसे सहेजें।

  4. SQLite DB ब्राउज़र खोलें, डेटाबेस बनाएँ, तब टेबल्स, और समान प्रकार जैसे यह MySQL डेटाबेस में है।

  5. SQLite DB ब्राउजर के मेनू बार में File-> फिर डेटा MySQL फ़ाइल आयात करें जिसे आपने सहेजा है।

यह आसानी से चेतावनी डायलॉग के बाद SQLite में परिवर्तित हो जाएगा।

यदि त्रुटि है तो अधिक अतिरिक्त लाइनों को हटा दें यदि आपकी MySQL फ़ाइल है।

ट्रायल बेसिस पर आप MySQL को SQLite कन्वर्टर सॉफ्टवेयर में भी इंस्टॉल कर सकते हैं, लेकिन रूपांतरण के लिए मैं जो जानकारी दे रहा हूं वह लाइफ टाइम है।


यह ठीक काम करता है यदि आपके डेटा में एपोस्ट्रोफ जैसा कोई चरित्र नहीं है। उदाहरण के लिए sql डंबल में "यह पीटर की पुस्तक है" यह 'पीटर की पुस्तक' होगी। यह DB Browser थ्रो एर कर देगा, एक बड़े डेटा के लिए इसे हटाना मुश्किल है। लेकिन अगर आप phpAdmin से डेटा को CSV से DB ब्राउज़र के रूप में आयात करते हैं, तो वह आयात सफल होगा। मुझे उम्मीद है कि यह मदद
Seunope

1

एक मैक चल रहा था इस मुद्दे के लिए मेरा समाधान था

  1. माणिकियो के उत्तर के समान रूबी और सीक्वल स्थापित करें। मैंने मैक ओएसएक्स के लिए रूबी डेवलपमेंट सेटअप पर रूबी, माईसक्ल और स्काईलाइट 3 रूबी की मदद के लिए इस लिंक का अनुसरण किया
  2. अगली कड़ी स्थापित करें

    $ gem install sequel

    अगर अभी भी आवश्यकता है

    % gem install mysql sqlite3

    फिर Sequel doc bin_fterel.rdoc के आधार पर निम्नलिखित का उपयोग करें (प्रतिलिपि डेटाबेस देखें)

    sequel -C mysql://myUserName:myPassword@host/databaseName sqlite://myConvertedDatabaseName.sqlite

विंडोज़ समाधान के लिए एक विंडोज़ उपयोगकर्ता रूबी और सीक्वल स्थापित कर सकता है।


मैं DB से केवल एक तालिका की प्रतिलिपि कैसे नहीं बना सकता हूं?
अतुल वैभव

अतीत में एक एकल तालिका के लिए मैंने ऐसा किया है, लेकिन एक बेहतर तरीका हो सकता है। पहली पंक्ति विकल्प में स्तंभ के नाम के साथ तालिका को csv के रूप में निर्यात करें, जिसे टिक किया गया है। फिर SQLite के लिए DB Browser का उपयोग करते हुए, csv विकल्प से आयात तालिका का उपयोग करके तालिका को मेरे मौजूदा sqlite डेटाबेस में आयात करें। फिर आपको संभावना होगी कि आप फ़ील्ड्स को उस प्रकार में बदलें, जिसकी आपको आवश्यकता है क्योंकि मुझे विश्वास है कि सभी फ़ील्ड TEXT पर सेट हो जाएंगे। जिस परियोजना में हम काम कर रहे थे, उस समय हम एक प्रक्रिया विकसित कर रहे थे, हमने एक डेटाबेस में सभी डेटा वापस करने के लिए एक एपीआई कॉल की और फिर डेटा को एप्स डेटाबेस में डाला / बदल दिया।
अनुदान भाग्य

लगता है यह काम कर रहा है। फिर भी, मैं नहीं पा सकता कि आउटपुट फ़ाइल कहाँ है। क्या आप मेरी मदद कर सकते हैं?
16

1

मैंने इस धागे पर कई तरीकों की कोशिश की, लेकिन मेरे लिए कुछ भी काम नहीं किया। तो यहाँ एक नया समाधान है, जिसे मैंने बहुत सरल भी पाया है:

  1. RazorSQL स्थापित करें । मैक, विंडोज और लिनक्स के लिए काम करता है।
  2. RazorSQL में अपने डेटाबेस से कनेक्ट करें, उदाहरण के लिए लोकलहोस्ट पर। रूपांतरण sql डंप फ़ाइलों के साथ काम नहीं करता है।
  3. अपने डेटाबेस पर राइट क्लिक करें -> डेटाबेस रूपांतरण -> SQLite चुनें। यह sqliteइस डेटाबेस को बनाने के लिए आवश्यक सभी प्रश्नों के साथ एक txt फ़ाइल को बचाएगा ।
  4. SQLite के लिए DB Browser की तरह SQLite डेटाबेस मैनेजर स्थापित करें । यह किसी भी OS पर काम करता है।
  5. एक खाली डेटाबेस बनाएँ, SQL टैब पर जाएँ और सामग्री को चरण 3 से चिपकाएँ।

बस, अब आपके पास अपना SQLite डेटाबेस है।


RazorSQL सिर्फ एक "सामान्य" * .sql फ़ाइल का निर्माण करता है, जिसमें टेबल परिभाषाएँ और डेटा सम्मिलित हैं, लेकिन विशेष रूप से SQLite विशिष्ट कुछ भी नहीं है। इसने दृश्यों का निर्यात नहीं किया जो कि एक बड़ा ऋण है। Mysqldump क्लाइंट जो MySql के निर्यात के साथ आता है, वह भी विचारों को निर्यात करता है, लेकिन यह सशर्त सामान आदि का भी उत्पादन करता है, जो SQLite को हजम नहीं होता।
दलिलंदर

0

यदि आपके पास Perl \ Python \ etc द्वारा सरल स्क्रिप्ट लिखने का अनुभव है, और MySQL को SQLite में रूपांतरित करें। मैसकल से डेटा पढ़ें और इसे SQLite पर लिखें।


0

मैं Jfly द्वारा सुझाए गए SQLite2009 प्रो एंटरप्राइज मैनेजर को पसंद करता हूं। तथापि:

  • MySQL datatype INT SQlite डेटाटाइप INTEGER (DBeaver के साथ काम करता है) में परिवर्तित नहीं होता है

  • यह MySQL से विदेशी कुंजी बाधाओं को आयात नहीं करता है (मुझे ऐसा कोई उपकरण नहीं मिला जो MySQL से SQlite में विदेशी कुंजी बाधाओं के हस्तांतरण का समर्थन करता है।)


0

से कनवर्टर उपकरणों की सूची मैंने पाया केएक्साई । यह यूबी टूल है जो विभिन्न DB सर्वरों (MySQL सहित) को SQLite में आयात करता है। जब कुछ डेटाबेस (MySQL से कहते हैं) आयात करते हैं तो इसे केक्सी प्रारूप में संग्रहीत करता है। Kexi प्रारूप 'मूल' SQLite प्रारूप है। तो बस केक्सी फ़ाइल को कॉपी करें और अपने डेटा को साइक्लाइट प्रारूप में रखें


0

यदि आपको एक डेटाबेस फ़ाइल दी गई है और सही सर्वर (या तो SQLite या MySQL) स्थापित नहीं किया है, तो इस टूल को आज़माएँ: https://dbconvert.com/sqlite/mysql/ परीक्षण संस्करण प्रत्येक तालिका के पहले 50 रिकॉर्ड को बदलने की अनुमति देता है बाकी डेटा वॉटरमार्क है। यह एक विंडोज प्रोग्राम है, और या तो एक रनिंग डेटाबेस सर्वर में डंप हो सकता है, या आउटपुट को .sql फाइल में डंप कर सकता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.