本文主要介紹了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; ";
相關推薦:
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END