উত্তর:
গিটহাবে একটি 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
এখানে রূপান্তরকারীদের একটি তালিকা । ( সংরক্ষণাগার। টোডে স্ন্যাপশট )
একটি বিকল্প পদ্ধতি যা এমনকি উইন্ডোতেও কাজ করে তবে খুব কমই উল্লেখ করা হয়: একটি ওআরএম ক্লাস ব্যবহার করুন যা আপনার জন্য নির্দিষ্ট ডাটাবেসের পার্থক্য দূরে রাখে। উদাহরণস্বরূপ, আপনি এইগুলি পিএইচপি ( রেডবিয়ান ), পাইথন (জ্যাঙ্গোর ওআরএম স্তর, ঝড় , স্ক্যালএলচেমি ), রুবি অন রেলস ( অ্যাক্টিভেকর্ড ), কোকো ( কোরডেটা ) ইত্যাদিতে পাবেন
যেমন আপনি এটি করতে পারে:
সিকুয়েল (রুবি ওআরএম) এর ডেটাবেসগুলি ব্যবহার করার জন্য একটি কমান্ড লাইন সরঞ্জাম রয়েছে, আপনার অবশ্যই রুবি ইনস্টল করা উচিত, তারপরে:
$ 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
এই দেশীয় রত্ন প্যাকেজগুলি তৈরি করতে আপনার প্যাকেজ দরকার ।
প্রতিটি ডিবি স্কিমা রূপান্তর করা যায় না। মাইএসকিউএল এসকিউএলাইটের চেয়ে জটিল এবং বৈশিষ্ট্য সমৃদ্ধ। তবে, যদি আপনার স্কিমাটি যথেষ্ট সহজ, আপনি এটি কোনও এসকিউএল ফাইলের মধ্যে ফেলে দিতে পারেন এবং এটি এসকিউএলডি ডিবিতে আমদানি / লোড করার চেষ্টা করতে পারেন।
আমি প্রায় 2 দিন আগে একই সমস্যার মুখোমুখি হয়েছিলাম যখন আমাকে একটি 20 জিবি + মাইএসকিউএল ডাটাবেস এসকিউএলাইটে রূপান্তর করতে হয়েছিল। এটি কোনওভাবেই সহজ কাজ ছিল না এবং আমি পাইথন প্যাকেজটি লিখে কাজটি শেষ করেছি ।
পাইথনে এটির উলটোপথটি হ'ল এটি ক্রস প্ল্যাটফর্ম (শেল / ব্যাশ স্ক্রিপ্টের বিপরীতে) এবং সহজেই pip install
উইন্ডোতেও ব্যবহার করে ইনস্টল করা যেতে পারে । এটি জেনারেটর এবং ডেটা প্রক্রিয়াজাতকরণের ছাঁচ ব্যবহার করে এবং তাই খুব স্মৃতিশক্তি দক্ষ।
আমি মাইএসকিউএল থেকে এসকিউএলাইটে বেশিরভাগ ডেটাটাইপগুলি সঠিকভাবে অনুবাদ করার জন্য কিছু প্রচেষ্টাও করেছি ।
এই সরঞ্জামটিও পুরোপুরি পরীক্ষা করা হয়েছে এবং পাইথন ২.7 এবং ৩.৫+ এ কাজ করে ।
এটি কমান্ড লাইনের মাধ্যমে অদলবদলযোগ্য তবে এটি একটি স্ট্যান্ডার্ড পাইথন শ্রেণি হিসাবেও ব্যবহার করা যেতে পারে যা আপনি কিছু বড় পাইথন অর্কেস্ট্রেশনে অন্তর্ভুক্ত করতে পারেন।
আপনি এটি কীভাবে ব্যবহার করবেন তা এখানে:
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-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
এবং যদি সবকিছু ঠিকঠাক হয়, আপনার এখন একটি ডাম্পফিল.ডিবি থাকা উচিত যা স্কয়ারাইট 3 এর মাধ্যমে ব্যবহার করা যেতে পারে।
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
এটি করার বিভিন্ন উপায় রয়েছে। আমারও এই সমস্যা ছিল এবং আমি অনেক অনুসন্ধান করেছিলাম এবং তারপরে আমি মাইএসকিউএলকে এসকিউএলাইটে রূপান্তর করার একটি সহজ উপায় পেয়েছি।
এই পদক্ষেপগুলি অনুসরণ করুন:
প্রথমে আপনাকে এসকিউএল ডিবি ব্রাউজারটি ইনস্টল করতে হবে (টেবিল এবং ডেটা দেখতে খুব ছোট এবং দ্রুত)
আপনার মাইএসকিউএল ফাইলটি নোটপ্যাডে খুলুন বা আপনি নোটপ্যাড ++ এ খুললে দুর্দান্ত হবে
প্রথম অতিরিক্ত রেখাগুলি সরান তথ্য বা কোয়েরি সমন্বিত এবং এটি সংরক্ষণ করুন।
এসকিউএল ডিবি ব্রাউজারটি খুলুন, ডেটাবেস তৈরি করুন, তারপরে সারণী এবং একই ধরণের মাইএসকিউএল ডাটাবেজে রয়েছে।
এসকিউএল ডিবি ব্রাউজারের মেনু বারে ফাইল নির্বাচন করুন -> তারপরে আপনি সংরক্ষণ করেছেন ডেটা মাইএসকিউএল ফাইল আমদানি করুন।
সতর্কতা ডায়ালগের পরে এটি সহজেই এসকিউএলাইটে রূপান্তরিত হবে।
ত্রুটি হলে আপনার মাইএসকিউএল ফাইল থাকলে আরও অতিরিক্ত লাইন সরিয়ে ফেলুন।
আপনি পরীক্ষার ভিত্তিতে এসকিউএলটি রূপান্তরকারী সফ্টওয়্যার থেকে মাইএসকিউএল ইনস্টল করতে পারেন তবে আমি রূপান্তরকরণের জন্য যে তথ্য দিচ্ছি তা জীবনকাল।
ম্যাক চালানো এই সমস্যাটির আমার সমাধানটি ছিল
সিক্যুয়াল ইনস্টল করুন
$ gem install sequel
এখনও প্রয়োজন হলে
% gem install mysql sqlite3
তারপরে সিকোয়েল ডক বিন_সেকুয়েল.আরডকের উপর ভিত্তি করে নিম্নলিখিতটি ব্যবহার করেছেন (কপি ডেটাবেস দেখুন)
sequel -C mysql://myUserName:myPassword@host/databaseName sqlite://myConvertedDatabaseName.sqlite
একটি উইন্ডোজ ব্যবহারকারী উইন্ডোজ সমাধানের জন্য রুবি এবং সিকুয়েল ইনস্টল করতে পারে।
আমি এই থ্রেডে বেশ কয়েকটি পদ্ধতি চেষ্টা করেছি, তবে কিছুই আমার পক্ষে কার্যকর হয়নি। সুতরাং এখানে একটি নতুন সমাধান দেওয়া হয়েছে, যা আমি খুব সহজ বলেও পেয়েছি:
sqlite
এই ডাটাবেসটি তৈরি করতে প্রয়োজনীয় প্রশ্নের ।এটি এখন, আপনার নিজের এসকিউএল ডাটাবেস রয়েছে।
আমি জেফ্লাই দ্বারা প্রস্তাবিত SQLite2009 প্রো এন্টারপ্রাইজ ম্যানেজারটি পছন্দ করি। যাহোক:
মাইএসকিউএল ডেটাটাইপ আইএনটি এসকিউলেট ডেটাটাইপ INTEGER এ রূপান্তরিত হয় না (ডিবিভারের সাথে কাজ করে)
এটি মাইএসকিউএল থেকে বিদেশী কী বাধাগুলি আমদানি করে না (মাইএসকিউএল থেকে এসকিউলাইটে বিদেশী কী সীমাবদ্ধতার স্থানান্তরকে সমর্থন করে এমন কোনও সরঞ্জাম আমি পাইনি))
রূপান্তরকারী সরঞ্জামগুলির তালিকা থেকে আমি ক্যাক্সি পেয়েছি । এটি বিভিন্ন ডিবি সার্ভারগুলি (মাইএসকিউএল সহ) এসকিউএলাইটে আমদানি করার জন্য একটি ইউআই সরঞ্জাম। কিছু ডাটাবেস আমদানি করার সময় (মাইএসকিউএল থেকে বলুন) এটি এটিকে কেक्सी ফর্ম্যাটে সংরক্ষণ করে। কেক্সি ফর্ম্যাটটি হ'ল 'নেটিভ' এসকিউএলাইট ফর্ম্যাট। সুতরাং কেবল কেক্সি ফাইলটি অনুলিপি করুন এবং স্ক্লাইট ফর্ম্যাটে আপনার ডেটা রাখুন
যদি আপনাকে কোনও ডাটাবেস ফাইল দেওয়া হয় এবং সঠিক সার্ভার (এসকিউলাইট বা মাইএসকিউএল) ইনস্টল না করে থাকেন তবে এই সরঞ্জামটি ব্যবহার করে দেখুন: https://dbconvert.com/sqlite/mysql/ ট্রায়াল সংস্করণটি প্রতিটি টেবিলের প্রথম 50 টি রেকর্ড রূপান্তর করতে দেয় , বাকি ডেটা জলচিহ্নযুক্ত। এটি একটি উইন্ডোজ প্রোগ্রাম, এবং হয় একটি চলমান ডাটাবেস সার্ভারে ডাম্প করতে পারে, বা একটি .sql ফাইলে আউটপুট ডাম্প করতে পারে