कृपया SQLite डेटाबेस में MySQL डेटाबेस को निर्यात करने में मेरी मदद करें।
जवाबों:
Github पर एक शानदार लिनक्स शेल स्क्रिप्ट है जो मैसकल को Sqlite3 फ़ाइल में कनवर्ट करता है। आपको अपने सर्वर पर mysqldump और sqlite3 दोनों की आवश्यकता है। बहुत अच्छा काम करता है।
2016-05-11 17:32 GMT+2 @esperlu declared MIT as a fitting license (also retrospectively) and the original gist as deprecated.
@ User2111698 द्वारा @quassy द्वारा संपादित उत्तर के रूप में वादा किया गया काम करता है। चूंकि मैं बार-बार ऐसा करता हूं, इसलिए मैंने उनके निर्देशों को बैश स्क्रिप्ट में डाला:
#!/bin/bash
mysql_host=localhost
mysql_user=george
mysql_dbname=database
sqlite3_dbname=database.sqlite3
# dump the mysql database to a txt file
mysqldump \
--skip-create-options \
--compatible=ansi \
--skip-extended-insert \
--compact \
--single-transaction \
-h$mysql_host \
-u$mysql_user \
-p $mysql_dbname \
> /tmp/localdb.txt
# remove lines mentioning "PRIMARY KEY" or "KEY"
cat /tmp/localdb.txt \
| grep -v "PRIMARY KEY" \
| grep -v KEY \
> /tmp/localdb.txt.1
# mysqldump leaves trailing commas before closing parentheses
perl -0pe 's/,\n\)/\)/g' /tmp/localdb.txt.1 > /tmp/localdb.txt.2
# change all \' to ''
sed -e 's/\\'\''/'\'''\''/g' /tmp/localdb.txt.2 > /tmp/localdb.txt.3
if [ -e $sqlite3_dbname ]; then
mv $sqlite3_dbname $sqlite3_dbname.bak
fi
sqlite3 $sqlite3_dbname < /tmp/localdb.txt.3
विस्तृत टिप्पणियों वाली एक तस्वीर https://gist.github.com/grfiv/b79ace3656113bcfbd9b7c7da8e9ae8d पर मिल सकती है
mysql2sqlite.sh को शीर्ष पोस्ट में उल्लेख किया गया है जो कि PRIMARY KEY लाइनों के साथ अच्छी तरह से सामना नहीं करता है, यह क्रिएट )
स्टेटमेंट को पूरा करने के लिए अनुगामी नहीं लिखता है ।
यह जो मैंने किया है। मैंने mysql डंप निम्नानुसार चलाया:
mysqldump --skip-create-options --compatible=ansi --skip-extended-insert --compact --single-transaction -h<host> -u<user> -p<passwd> <database name> > localdb.txt
मैंने तब प्राथमिक कुंजी और कुंजी को हटाने के लिए grep का उपयोग किया:
cat localdb.txt | grep -v "PRIMARY KEY' | grep -v KEY > localdb.txt.1
मैंने फ़ाइल को ठीक करने के लिए एक संपादक का उपयोग किया। जब कुंजियाँ हटा दी जाती हैं तो आप क्रिएट स्टेटमेंट के साथ समाप्त होते हैं जो दिखता है:
CREATE ...
...,
)
उस अनुगामी ,
को हटाना होगा। Vi में यह अभिव्यक्ति उनसे मेल खाती है, $ \ n)
फिर आपको सभी \'
को बदलने की आवश्यकता है''
फिर आप आयात कर सकते हैं:
sqlite3 local.sqlite3 < localdb.txt.1
और बस। मुझे एक भी कार्यक्रम नहीं मिला जो मेरे लिए काम करता हो। मुझे उम्मीद है इससे किसी को सहायता मिलेगी।
मैंने मैनुअल को साइक्लाइट डेटाबेस में तालिका संरचना बनाई।
क्या मैंने निम्नलिखित आदेश के साथ डेटा अपलोड किया है:
mysqldump -u root {database} {table} --no-create-info --skip-extended-insert --complete-insert --skip-add-locks --compatible=ansi | sed "s/\\\'/''/g" |sqlite3 flora.db
मुझे दो डेटाबेस में एक अलग एपेक्स एन्कोडिंग को ठीक करने के लिए sed का उपयोग करना था
व्यक्तिगत रूप से मुझे mysqldump का सरल उपयोग पसंद है, फिर भी कुछ समायोजन की आवश्यकता है (यूनिक्स के साथ आपकी कला के आधार पर और आप क्या करना चाहते हैं)।
पूर्व। पीके के साथ सिर्फ एक टेबल (प्रॉड्स) के लिए:
$ mysqldump mysql prods -u ME -pPASS --compatible ansi --compact |grep -v "^\/\*" |sqlite3 testme2.db
$ mysqldump mysql prods -u ME -pPASS --compatible ansi --compact |grep -v "^\/\*" |sqlite3 testme2.db
Error: near line 1: table "prods" already exists
Error: near line 7: UNIQUE constraint failed: prods.id, prods.ts
$ sqlite3 testme2.db '.schema'
CREATE TABLE "prods" (
"id" varchar(30) NOT NULL DEFAULT '',
"ts" int(11) NOT NULL DEFAULT '0',
"val" double DEFAULT NULL,
PRIMARY KEY ("id","ts")
);
अधिक जटिल चीजों के लिए, शायद एक आवरण लिखने के लिए बेहतर है, या फिर, जिस्ट पर पहले से ही उल्लिखित शानदार awk लिनक्स शेल स्क्रिप्ट का उपयोग करें ।
SQLite डेटाबेस ब्राउज़र नामक एक शानदार, हल्का उपकरण है जो आपको sqlite डेटाबेस बनाने और संपादित करने की अनुमति देता है। मैंने इसका उपयोग एंड्रॉइड ऐप के लिए डेटाबेस को क्रिटेट करने के लिए किया। आप डेटा को लोड करने के लिए इसके खिलाफ SQL स्टेटमेंट चला सकते हैं, इसलिए यदि आप mySQL डेटाबेस से डेटा निर्यात करते हैं तो आप इस टूल का उपयोग करके इसे आयात कर सकते हैं। यहाँ एक लिंक है: http://sqlitebrowser.sourceforge.net/
के साथ डेटा निर्यात करें
mysqldump database > database.sql
और के साथ डेटा आयात करें
sqlite3 database < database.sql
आपको -u (उपयोगकर्ता) और -p (पासवर्ड) विकल्प की आवश्यकता हो सकती है