ऐसा लगता है कि हर कोई कुछ greps और perl अभिव्यक्तियों के साथ शुरू होता है और आपको कुछ ऐसा मिलता है जो आपके विशेष डेटासेट के लिए काम करता है लेकिन आपको पता नहीं है कि यह डेटा सही तरीके से आयात किया गया है या नहीं। मुझे गंभीरता से आश्चर्य है कि किसी ने भी एक ठोस पुस्तकालय नहीं बनाया है जो दोनों के बीच परिवर्तित हो सके।
यहाँ SQL सिंटैक्स में सभी अंतरों की एक सूची है जो मुझे दो फ़ाइल स्वरूपों के बीच के बारे में पता है:से शुरू होने वाली रेखाएँ:
- लेनदेन शुरू करें
- कमिट
- sqlite_sequence
- अद्वितीय अनुक्रमणिका बनाएं
MySQL में उपयोग नहीं किया जाता है
- SQLite
CREATE TABLE/INSERT INTO "table_name"
का उपयोग करता है और MySQLCREATE TABLE/INSERT INTO table_name
. का उपयोग करता है - MySQL स्कीमा परिभाषा के अंदर उद्धरणों का उपयोग नहीं करता
- MySQL
INSERT INTO
. के अंदर स्ट्रिंग्स के लिए सिंगल कोट्स का उपयोग करता है खंड - SQLite और MySQL में
INSERT INTO
के अंदर स्ट्रिंग से बचने के अलग-अलग तरीके हैं खंड - SQLite
't'
का उपयोग करता है और'f'
बूलियन के लिए, MySQL1
. का उपयोग करता है और0
(इसके लिए एक साधारण रेगेक्स तब विफल हो सकता है जब आपके पास एक स्ट्रिंग हो जैसे:'मैं करता हूं, आप नहीं करते' आपकेINSERT INTO
के अंदर ) - SQLLite
AUTOINCREMENT
का उपयोग करता है , MySQLAUTO_INCREMENT
का उपयोग करता है
यहाँ एक बहुत ही बुनियादी हैक की गई पर्ल स्क्रिप्ट है जो my . के लिए काम करती है डेटासेट और इन स्थितियों में से कई के लिए जांच करता है कि वेब पर मुझे मिली अन्य पर्ल स्क्रिप्ट। Nu गारंटी देता है कि यह आपके डेटा के लिए काम करेगा लेकिन बेझिझक संशोधित करें और यहां वापस पोस्ट करें।
#! /usr/bin/perl
while ($line = <>){
if (($line !~ /BEGIN TRANSACTION/) && ($line !~ /COMMIT/) && ($line !~ /sqlite_sequence/) && ($line !~ /CREATE UNIQUE INDEX/)){
if ($line =~ /CREATE TABLE \"([a-z_]*)\"(.*)/i){
$name = $1;
$sub = $2;
$sub =~ s/\"//g;
$line = "DROP TABLE IF EXISTS $name;\nCREATE TABLE IF NOT EXISTS $name$sub\n";
}
elsif ($line =~ /INSERT INTO \"([a-z_]*)\"(.*)/i){
$line = "INSERT INTO $1$2\n";
$line =~ s/\"/\\\"/g;
$line =~ s/\"/\'/g;
}else{
$line =~ s/\'\'/\\\'/g;
}
$line =~ s/([^\\'])\'t\'(.)/$1THIS_IS_TRUE$2/g;
$line =~ s/THIS_IS_TRUE/1/g;
$line =~ s/([^\\'])\'f\'(.)/$1THIS_IS_FALSE$2/g;
$line =~ s/THIS_IS_FALSE/0/g;
$line =~ s/AUTOINCREMENT/AUTO_INCREMENT/g;
print $line;
}
}