前幾天剛好遇到這個問題,不要問我說為啥我要轉,只是突然想到...XDrz
可以參考這裡sqlite - Converter Tools
當然我的作法是將步驟分開來作的
先將sqldump出來
1 | mysqldump -u'username' -p'password' --compact --compatible=ansi --default-character-set=binary 'databasename' > database.sql
|
接著就利用內部所說的sh script擷取部份
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 | #!/bin/sh
cat database.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;
}
' > output.sql
cat output.sql | sqlite3 output.db > output.err
|
這樣的好處是說只要亦有問題,可以依照error message出現的錯誤去修正database.sql,老實他那個error message一直沒有辦法被output出來,建議使用script指令紀錄錯誤訊息,利用錯誤訊息慢慢去修正會比較好。