মাইএসকিউএলকে এসক্লাইটে রূপান্তর করুন [বন্ধ]


120

উইন্ডোজে কোনও নিখরচায় সরঞ্জাম দিয়ে মাইএসকিউএল থেকে এসকিউএলাইটে রূপান্তর করা সম্ভব?


উত্তর:


78

গিটহাবে একটি mysql2sqlite.sh স্ক্রিপ্ট রয়েছে

শিরোনামে বর্ণিত হিসাবে, স্ক্রিপ্টটি এটি ব্যবহার করা যেতে পারে:

./mysql2sqlite.sh myDbase | sqlite3 database.sqlite

বিকল্প


8
মোহন হিসাবে কাজ করে! এখানে কিছুটা ডকুমেন্টেশন রয়েছে: $ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite gist.github.com/943776
কাছার

স্ক্রিপ্ট শুধু কম্যান্ড লাইন থেকে আর্গুমেন্ট pulls এবং তাদের পাসের mysqldump যাতে আপনি কনফিগার কাস্টম পোর্ট, ইত্যাদি সঙ্গে সম্পর্কে জানতে পারেন man mysqlবাman mysqldump
Devin হাওয়ার্ড

2
এখানে লক্ষণীয় যে এই স্ক্রিপ্টটি এখানে রক্ষণাবেক্ষণ করা একজন উত্তরসূরি দ্বারা বাতিল করা হয়েছে: github.com/dumblob/mysql2sqlite
drzax

এমনকি অ-এসকিআই অক্ষরগুলির সাথে অভিনয় করা আরও ভাল: $ / / mysql2sqlite.sh --default-character-set = utf8 -host -uUser -pPass db | sqlite3 db.sqlite gist.github.com/esperlu/943776#gistcomment-984448
সান জুনওয়েন

52

এখানে রূপান্তরকারীদের একটি তালিকা । ( সংরক্ষণাগার। টোডে স্ন্যাপশট )


একটি বিকল্প পদ্ধতি যা এমনকি উইন্ডোতেও কাজ করে তবে খুব কমই উল্লেখ করা হয়: একটি ওআরএম ক্লাস ব্যবহার করুন যা আপনার জন্য নির্দিষ্ট ডাটাবেসের পার্থক্য দূরে রাখে। উদাহরণস্বরূপ, আপনি এইগুলি পিএইচপি ( রেডবিয়ান ), পাইথন (জ্যাঙ্গোর ওআরএম স্তর, ঝড় , স্ক্যালএলচেমি ), রুবি অন রেলস ( অ্যাক্টিভেকর্ড ), কোকো ( কোরডেটা ) ইত্যাদিতে পাবেন

যেমন আপনি এটি করতে পারে:

  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আপনি যদি কোনও পোস্টগ্রিস ডিবি থেকে বা রূপান্তর করতে চান তবে সিক্যুলে মেজর ডিবি'র জন্য অ্যাডাপ্টার থাকা উচিত
ম্যাকারিও

2
আপনি যদি ব্যবহার করছেন তবে এর mysqlসাথে প্রতিস্থাপন করুনmysql2mysql2
কার্লোসিন

1
দ্রষ্টব্য: ruby-devএই দেশীয় রত্ন প্যাকেজগুলি তৈরি করতে আপনার প্যাকেজ দরকার ।
পান্ডা

1
"জহর ইনস্টল সিক্যুয়েল mysql2 sqlite3" ব্যবহার করতে হবে এবং তারপরে "সিক্যুয়েল mysql2: // ব্যবহারকারী: পাসওয়ার্ড @ হোস্ট / ডাটাবেস-সি স্ক্লাইট: //db.sqlite" পারফেক্ট
unom

17

প্রতিটি ডিবি স্কিমা রূপান্তর করা যায় না। মাইএসকিউএল এসকিউএলাইটের চেয়ে জটিল এবং বৈশিষ্ট্য সমৃদ্ধ। তবে, যদি আপনার স্কিমাটি যথেষ্ট সহজ, আপনি এটি কোনও এসকিউএল ফাইলের মধ্যে ফেলে দিতে পারেন এবং এটি এসকিউএলডি ডিবিতে আমদানি / লোড করার চেষ্টা করতে পারেন।


আপনার মাইএসকিউএল ডাটাবেসটিকে কোনও ফাইলে ফেলে দেওয়ার পরে, আপনি এই স্ক্রিপ্টটি এসকিউএলথ github.com/dumblob/mysql2sqlite এ রূপান্তর করতে ব্যবহার করতে পারেন ( @ ডেভিড_লেবারের উত্তরে উল্লিখিত)।
পল রাউজিউক্স

7

আমি প্রায় 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.

1
আরে @ টেকহাউস, দুর্দান্ত দেখাচ্ছে! এটি কোনও .sqlডাম্প ফাইলের সাথে কাজ করতে পারে এমন কোনও উপায় আছে বা এটি কোনও ইনস্টলড মাইএসকিউএল ডাটাবেসের সাথে সংযোগ প্রয়োজন?
ভোরটেক

হে! উম্মম, এর জন্য একটি কার্যকরী মাইএসকিউএল ডাটাবেস দরকার নেই । আপনার যদি সত্যিকারের সার্ভার ছাড়াই ডাম্প থাকে তবে আপনার সর্বোত্তম বেটটি হ'ল ফাইলটি ম্যানুয়ালি পরিবর্তন করা যদি আপনি জানেন যে আপনি কী করছেন।
ক্লিমেন তুয়ার

@ মার্কাডিয়ানাইভার আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি সবসময় পাইথন virtual
ক্লিমেন তুয়ারের


4

মাইএসকিউএল ডিবিকে স্ক্লাইটে রূপান্তর করার সহজ উপায়:

1) আপনার মাইএসকিএল ডাটাবেস জন্য স্কয়ার ডাম্প ফাইল উত্পন্ন।

2) এখানে রেবেসডাটা অনলাইন রূপান্তরকারীটিতে ফাইল আপলোড করুন

3) স্ক্লাইট ফর্ম্যাটে ডাটাবেস ডাউনলোড করতে একটি ডাউনলোড বোতাম পৃষ্ঠায় উপস্থিত হবে


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

এবং যদি সবকিছু ঠিকঠাক হয়, আপনার এখন একটি ডাম্পফিল.ডিবি থাকা উচিত যা স্কয়ারাইট 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

3

এটি করার বিভিন্ন উপায় রয়েছে। আমারও এই সমস্যা ছিল এবং আমি অনেক অনুসন্ধান করেছিলাম এবং তারপরে আমি মাইএসকিউএলকে এসকিউএলাইটে রূপান্তর করার একটি সহজ উপায় পেয়েছি।

এই পদক্ষেপগুলি অনুসরণ করুন:

  1. প্রথমে আপনাকে এসকিউএল ডিবি ব্রাউজারটি ইনস্টল করতে হবে (টেবিল এবং ডেটা দেখতে খুব ছোট এবং দ্রুত)

  2. আপনার মাইএসকিউএল ফাইলটি নোটপ্যাডে খুলুন বা আপনি নোটপ্যাড ++ এ খুললে দুর্দান্ত হবে

  3. প্রথম অতিরিক্ত রেখাগুলি সরান তথ্য বা কোয়েরি সমন্বিত এবং এটি সংরক্ষণ করুন।

  4. এসকিউএল ডিবি ব্রাউজারটি খুলুন, ডেটাবেস তৈরি করুন, তারপরে সারণী এবং একই ধরণের মাইএসকিউএল ডাটাবেজে রয়েছে।

  5. এসকিউএল ডিবি ব্রাউজারের মেনু বারে ফাইল নির্বাচন করুন -> তারপরে আপনি সংরক্ষণ করেছেন ডেটা মাইএসকিউএল ফাইল আমদানি করুন।

সতর্কতা ডায়ালগের পরে এটি সহজেই এসকিউএলাইটে রূপান্তরিত হবে।

ত্রুটি হলে আপনার মাইএসকিউএল ফাইল থাকলে আরও অতিরিক্ত লাইন সরিয়ে ফেলুন।

আপনি পরীক্ষার ভিত্তিতে এসকিউএলটি রূপান্তরকারী সফ্টওয়্যার থেকে মাইএসকিউএল ইনস্টল করতে পারেন তবে আমি রূপান্তরকরণের জন্য যে তথ্য দিচ্ছি তা জীবনকাল।


আপনার ডেটাতে অ্যাডাস্ট্রোফের মতো কোনও অক্ষর না থাকলে এটি কার্যকর হয়েছে fine উদাহরণস্বরূপ, "এটি পিটারের বই" স্কেল বোবাতে হবে 'এটি পিতরের বই'। এটি ডিবি ব্রাউজারটিকে ত্রুটি করে দেবে, বড় ডেটার জন্য এটি মুছে ফেলা কঠিন is তবে আপনি যদি পিএইচপিএডমিন থেকে সিএসভি হিসাবে ডেবিটি ডিবি ব্রাউজারে আমদানি করেন তবে সেই আমদানি সফল হবে। আমি আশা করি এই সহায়তা
Seunope

1

ম্যাক চালানো এই সমস্যাটির আমার সমাধানটি ছিল

  1. রুবি এবং ম্যাকারিওর উত্তরের অনুরূপ সিক্যুয়াল ইনস্টল করুন। আমি এই লিঙ্কটি অনুসরণ করে রুবি, মাইএসকিএল এবং স্ক্লাইট 3 রুবিকে ম্যাক ওএসএক্সের জন্য রেল ডেভেলপমেন্ট সেটআপে সহায়তা করুন
  2. সিক্যুয়াল ইনস্টল করুন

    $ gem install sequel

    এখনও প্রয়োজন হলে

    % gem install mysql sqlite3

    তারপরে সিকোয়েল ডক বিন_সেকুয়েল.আরডকের উপর ভিত্তি করে নিম্নলিখিতটি ব্যবহার করেছেন (কপি ডেটাবেস দেখুন)

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

একটি উইন্ডোজ ব্যবহারকারী উইন্ডোজ সমাধানের জন্য রুবি এবং সিকুয়েল ইনস্টল করতে পারে।


আমি কীভাবে ডিবি থেকে পুরো মাইএসকিএল ডাটাবেস নয় কেবল একটি টেবিলটি অনুলিপি করতে পারি?
অতুল বৈভব

অতীতে একক টেবিলের জন্য আমি এটি করেছি, তবে এর থেকে আরও ভাল উপায় হতে পারে। প্রথম সারির বিকল্পটিতে টিকযুক্ত কলামের নামগুলি সহ সারণিটি সিএসভি হিসাবে রফতানি করুন। তারপরে এসকিউএলাইটের জন্য ডিবি ব্রাউজার ব্যবহার করে, সিএসভি বিকল্প থেকে আমদানি সারণীটি ব্যবহার করে আমার বিদ্যমান স্ক্লাইট ডাটাবেসে টেবিলটি আমদানি করুন। তারপরে আপনাকে সম্ভবত ক্ষেত্রগুলি প্রয়োজন অনুযায়ী পরিবর্তন করতে হবে কারণ আমি বিশ্বাস করি যে সমস্ত ক্ষেত্রগুলি পাঠ্য সারণিতে সেট করা হবে। প্রকল্পটিতে আমি কাজ করছি যদিও আমরা একটি প্রক্রিয়া বিকাশ করেছি যদিও আমরা একটি টেবিলের সমস্ত ডেটা ফেরত দেওয়ার জন্য একটি এপিআই কল করা হয়েছিল এবং তারপরে অ্যাপ্লিকেশন ডেটাবেজে ডেটা /োকানো / প্রতিস্থাপন করেছি।
অনুদান লাক

মনে হচ্ছে এটি কাজ করছে। তবুও, আউটপুট ফাইলটি কোথায় তা আমি খুঁজে পাচ্ছি না। আপনি কি আমাকে সাহায্য করতে পারেন?
পন্টিওস

1

আমি এই থ্রেডে বেশ কয়েকটি পদ্ধতি চেষ্টা করেছি, তবে কিছুই আমার পক্ষে কার্যকর হয়নি। সুতরাং এখানে একটি নতুন সমাধান দেওয়া হয়েছে, যা আমি খুব সহজ বলেও পেয়েছি:

  1. রেজার এসকিউএল ইনস্টল করুন । ম্যাক, উইন্ডোজ এবং লিনাক্সের জন্য কাজ করে।
  2. রেজার এসকিউএলে উদাহরণস্বরূপ লোকালহোস্টে আপনার ডাটাবেসের সাথে সংযুক্ত হন। স্কয়ার ডাম্প ফাইলগুলির সাথে রূপান্তর কাজ করে না।
  3. আপনার ডাটাবেস -> ডাটাবেস রূপান্তর -> এসকিউএলাইট নির্বাচন করুন ডান ক্লিক করুন। এটি সমস্ত সহ একটি টেক্সট ফাইল সংরক্ষণ করবেsqliteএই ডাটাবেসটি তৈরি করতে প্রয়োজনীয় প্রশ্নের ।
  4. SQLite এর জন্য DB ব্রাউজারের মতো একটি SQLite ডাটাবেস ম্যানেজার ইনস্টল করুন । এটি যে কোনও ওএসে কাজ করে।
  5. একটি খালি ডাটাবেস তৈরি করুন, এসকিউএল ট্যাব সম্পাদন করুন এবং পদক্ষেপ 3 থেকে সামগ্রীটি আটকান।

এটি এখন, আপনার নিজের এসকিউএল ডাটাবেস রয়েছে।


রেজার এসকিউএল কেবল সারণী সংজ্ঞা এবং ডেটা intোকানো ইন্টো সহ একটি "সাধারণ" *। এসকিউএল ফাইল তৈরি করেছে বলে মনে হচ্ছে তবে বিশেষত এসকিউএলাইট নির্দিষ্ট কিছুই নয়। এটি ভিউগুলি রপ্তানি করে নি যা একটি বড় বিয়োগফল। মাইএসকিএলডাম ক্লায়েন্টটি যা মাইএসকিএল-এর সাথে দেখা যায় সেগুলিও ভিউ রফতানি করে তবে এটি প্রচুর শর্তযুক্ত সামগ্রী ইত্যাদি তৈরি করে যা এসকিউএলাইট হজম করবে না।
ডালিল্যান্ডার

0

আপনার যদি পার্ল \ পাইথন \ ইত্যাদি দ্বারা সাধারণ স্ক্রিপ্টগুলি লেখার অভিজ্ঞতা থাকে এবং মাইএসকিউএলকে এসকিউএলাইটে রূপান্তর করেন। মাইকিউএল থেকে ডেটা পড়ুন এবং এসকিউএলাইটে এটি লিখুন।


0

আমি জেফ্লাই দ্বারা প্রস্তাবিত SQLite2009 প্রো এন্টারপ্রাইজ ম্যানেজারটি পছন্দ করি। যাহোক:

  • মাইএসকিউএল ডেটাটাইপ আইএনটি এসকিউলেট ডেটাটাইপ INTEGER এ রূপান্তরিত হয় না (ডিবিভারের সাথে কাজ করে)

  • এটি মাইএসকিউএল থেকে বিদেশী কী বাধাগুলি আমদানি করে না (মাইএসকিউএল থেকে এসকিউলাইটে বিদেশী কী সীমাবদ্ধতার স্থানান্তরকে সমর্থন করে এমন কোনও সরঞ্জাম আমি পাইনি))


0

রূপান্তরকারী সরঞ্জামগুলির তালিকা থেকে আমি ক্যাক্সি পেয়েছি । এটি বিভিন্ন ডিবি সার্ভারগুলি (মাইএসকিউএল সহ) এসকিউএলাইটে আমদানি করার জন্য একটি ইউআই সরঞ্জাম। কিছু ডাটাবেস আমদানি করার সময় (মাইএসকিউএল থেকে বলুন) এটি এটিকে কেक्सी ফর্ম্যাটে সংরক্ষণ করে। কেক্সি ফর্ম্যাটটি হ'ল 'নেটিভ' এসকিউএলাইট ফর্ম্যাট। সুতরাং কেবল কেক্সি ফাইলটি অনুলিপি করুন এবং স্ক্লাইট ফর্ম্যাটে আপনার ডেটা রাখুন


0

যদি আপনাকে কোনও ডাটাবেস ফাইল দেওয়া হয় এবং সঠিক সার্ভার (এসকিউলাইট বা মাইএসকিউএল) ইনস্টল না করে থাকেন তবে এই সরঞ্জামটি ব্যবহার করে দেখুন: https://dbconvert.com/sqlite/mysql/ ট্রায়াল সংস্করণটি প্রতিটি টেবিলের প্রথম 50 টি রেকর্ড রূপান্তর করতে দেয় , বাকি ডেটা জলচিহ্নযুক্ত। এটি একটি উইন্ডোজ প্রোগ্রাম, এবং হয় একটি চলমান ডাটাবেস সার্ভারে ডাম্প করতে পারে, বা একটি .sql ফাইলে আউটপুট ডাম্প করতে পারে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.