實例講解sqlite遷移到mysql腳本的方法_

本文主要介紹了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; ";  #print?"SET?AUTOCOMMIT=0; ";  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; CREATE?TABLE?$name$sub ";?  ???}  ???elsif?($line?=~?/CREATE?VIEW?([a-z_0-9]*)(.*)/){  ???$name?=?"`$1`";  ???$sub?=?$2;  ???$line?=?"DROP?VIEW?IF?EXISTS?$name; CREATE?VIEW?$name$sub ";  ???}  ???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."; ".$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; ";

相關推薦:

PHP之SQLite數據庫類操作與用法實例

PHP之SQLite數據庫類操作與用法實例

PHP之SQLite數據庫類操作與用法實例

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享