Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

SQLite3 को MySQL में माइग्रेट करने का त्वरित आसान तरीका?

ऐसा लगता है कि हर कोई कुछ greps और perl अभिव्यक्तियों के साथ शुरू होता है और आपको कुछ ऐसा मिलता है जो आपके विशेष डेटासेट के लिए काम करता है लेकिन आपको पता नहीं है कि यह डेटा सही तरीके से आयात किया गया है या नहीं। मुझे गंभीरता से आश्चर्य है कि किसी ने भी एक ठोस पुस्तकालय नहीं बनाया है जो दोनों के बीच परिवर्तित हो सके।

यहाँ SQL सिंटैक्स में सभी अंतरों की एक सूची है जो मुझे दो फ़ाइल स्वरूपों के बीच के बारे में पता है:से शुरू होने वाली रेखाएँ:

  • लेनदेन शुरू करें
  • कमिट
  • sqlite_sequence
  • अद्वितीय अनुक्रमणिका बनाएं

MySQL में उपयोग नहीं किया जाता है

  • SQLite CREATE TABLE/INSERT INTO "table_name" का उपयोग करता है और MySQL CREATE TABLE/INSERT INTO table_name . का उपयोग करता है
  • MySQL स्कीमा परिभाषा के अंदर उद्धरणों का उपयोग नहीं करता
  • MySQL INSERT INTO . के अंदर स्ट्रिंग्स के लिए सिंगल कोट्स का उपयोग करता है खंड
  • SQLite और MySQL में INSERT INTO के अंदर स्ट्रिंग से बचने के अलग-अलग तरीके हैं खंड
  • SQLite 't' का उपयोग करता है और 'f' बूलियन के लिए, MySQL 1 . का उपयोग करता है और 0 (इसके लिए एक साधारण रेगेक्स तब विफल हो सकता है जब आपके पास एक स्ट्रिंग हो जैसे:'मैं करता हूं, आप नहीं करते' आपके INSERT INTO के अंदर )
  • SQLLite AUTOINCREMENT का उपयोग करता है , MySQL AUTO_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;
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल - कैसे स्थानांतरित करने के लिए?

  2. गुण फ़ाइल उदाहरण से JDBC कॉन्फ़िगरेशन कैसे लोड करें

  3. MySQL को AWS RDS पर PostgreSQL में माइग्रेट करना, भाग 1

  4. मैं टर्मिनल से MySQL के साथ डेटाबेस कैसे आयात कर सकता हूं?

  5. MySQL प्रतिकृति का उपयोग करके मूडल के लिए अत्यधिक उपलब्ध डेटाबेस का निर्माण