MySql语句转换为SQLite语句

风行水上 @ 2010-08-01 21:00:38
标签:

    下面的代码来自 http://www.sqlite.org/cvstrac/wiki?p=ConverterTools,用于转换MySql语句到SQLite语句。

    # mysql2sqlite : Convert MySql statement to SQLite statement
    
    cat mysql.sql |
      grep -v ' KEY "' |
      grep -v ' UNIQUE KEY "' |
      grep -v ' PRIMARY KEY ' |
      sed 's/ unsigned / /g' |
      sed 's/ auto_increment/ primary key autoincrement/gi' |
      sed 's/ smallint([0-9]*) / integer /gi' |
      sed 's/ tinyint([0-9]*) / integer /gi' |
      sed 's/ int([0-9]*) / integer /gi' |
      sed 's/ character set [^ ]* / /gi' |
      sed 's/ enum([^)]*) / varchar(255) /gi' |
      sed 's/ on update [^,]*//gi' |
      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;
      }
      ' 
    

    也许一段MySql的语句有助于理解上述代码的工作方式

    CREATE TABLE IF NOT EXISTS `page_info` (
      `id` int(11) unsigned NOT NULL auto_increment,
      `page` varchar(200) default NULL,
      `created` datetime default NULL,
      `updated` datetime default NULL,
      `creator` varchar(100) default NULL,
      `tag` varchar(200) default NULL,
      `title` varchar(250) default NULL,
      PRIMARY KEY  (`id`),
      UNIQUE KEY `page` (`page`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=141 ;   
    
    标签:

      分享到:
      comments powered by Disqus

      31/35ms