<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      sqlite怎么遷移到MySQL腳本的案例介紹

      [摘要]這篇文章主要介紹了sqlite遷移到mysql腳本的方法,需要的朋友可以參考下廢話不多說了,直接給大家貼代碼了,具體代碼如下所示:#! /usr/bin/perl## based on https:...
      這篇文章主要介紹了sqlite遷移到mysql腳本的方法,需要的朋友可以參考下

      廢話不多說了,直接給大家貼代碼了,具體代碼如下所示:


      #! /usr/bin/perl
      #
      # based on https://stackoverflow.com/a/87531/5742651
      # usage: sqlite3 .dump database_name.sqlite3   perl sqlite2mysql.pl   mysql -u root -p $import_database_name
      #
      # ignore follow lines:
      #  BEGIN TRANSACTION 
      #  COMMIT 
      #  sqlite_sequence 
      #  CREATE UNIQUE INDEX
      #  PRAGMA foreign_keys=OFF
      # "tablename/field" => `tablename/field`
      # booleans 't' and 'f' => 1 and 0
      # AUTOINCREMENT => AUTO_INCREMENT
      # varchar => varchar(255)
      # CREATE TABLE table... => DROP TABLE table; CREATE TABLE table...
      # Merge insert sqls into multiple insert to speed up
      #  INSERT INTO table VALUES('val1');
      #  INSERT INTO table VALUES('val2');  => INSERT INTO table VALUES('val1'), ('val2'), ('val3');
      #  INSERT INTO table VALUES('val3');
      my $open=0;
      my $line_cache = '';
      # For speed up
      print "SET GLOBAL max_allowed_packet=209715200;\n";
      #print "SET AUTOCOMMIT=0;\n";
      while ($line = <>){
        if (($line !~ /PRAGMA foreign_keys=OFF/) && ($line !~ /BEGIN TRANSACTION/) && ($line !~ /COMMIT/) && ($line !~ /sqlite_sequence/) && ($line !~ /CREATE UNIQUE INDEX/)){
         if ($line =~ /CREATE TABLE \"([a-z_0-9]*)\"(.*)/){
         $name = "\`$1\`";
         $sub = $2;
         $sub =~ s/varchar([^(])/varchar(255)$1/g;
         $line = "DROP TABLE IF EXISTS $name;\nCREATE TABLE $name$sub\n"; 
         }
         elsif ($line =~ /CREATE VIEW ([a-z_0-9]*)(.*)/){
         $name = "\`$1\`";
         $sub = $2;
         $line = "DROP VIEW IF EXISTS $name;\nCREATE VIEW $name$sub\n";
         }
         elsif ($line =~ /INSERT INTO \"([a-z_]*)\" VALUES(.*);/){
              if ($open == 0) {
                $open = 1;
             $line_cache .= "INSERT INTO \`$1\` VALUES $2";
              } else {
                $line_cache .= ", $2";
              }
              next;
         }else{
         $line =~ s/\'\'/\\\'/g;
         }
          if ($open == 1) {
             $open = 0;
             $line = $line_cache.";\n".$line;
             $line_cache = '';
          }
         $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;
        }
      }
      #print "SET AUTOCOMMIT=1;\n";

      總結

      以上就是sqlite如何遷移到MySQL腳本的實例介紹的詳細內容,更多請關注php中文網其它相關文章!


      學習教程快速掌握從入門到精通的SQL知識。




      日韩精品一区二区三区高清