废话不多说了,直接给大家贴代码了,具体代码如下所示:

#! /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 upprint "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";

更多相关文章

  1. 基于MQTT实现Android消息推送(Push)
  2. ES6 变量声明,箭头函数,数组方法,解构赋值,JSON,类与继承,模块化练习
  3. 浅谈Java中Collections.sort对List排序的两种方法
  4. Python list sort方法的具体使用
  5. python list.sort()根据多个关键字排序的方法实现
  6. android上一些方法的区别和用法的注意事项
  7. android实现字体闪烁动画的方法
  8. Android中dispatchDraw分析
  9. android ndk编译x264开源(用于android的ffmpeg中进行软编码)

随机推荐

  1. 用 cURL 请求测试 ETag 浏览器缓存[每日
  2. 69.批量创建mysql用户
  3. 香~Spring Boot 应用也可以有注册中心。
  4. 香~Spring Boot 应用也可以有配置中心。
  5. W3C TPAC 大会上的 Service workers 内容
  6. Linux性能优化(八)——网络测试工具
  7. Spring 中的事件机制,芳芳用过都说好~
  8. Swagger 自动生成 Dubbo 服务的接口文档,
  9. 介绍 Java 中的内存泄漏
  10. 诊断 Java.lang.OutOfMemoryError(OOM)