」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何將 MySQL 轉儲 SQL 檔案轉換為 SQLite3 資料庫?

如何將 MySQL 轉儲 SQL 檔案轉換為 SQLite3 資料庫?

發佈於2024-11-08
瀏覽:635

How to Convert a MySQL Dump SQL File to a SQLite3 Database?

將 MySQL Dump SQL 轉換為 Sqlite3 DB

將 MySQL Dump SQL 轉換為 Sqlite3 DB

將 MySQL Dump SQL 檔案匯入 SQLite3 資料庫需要轉換以確保相容性。

#!/bin/sh
# Usage: $0 

if [ "x$1" == "x" ]; then
   echo "Usage: $0 "
   exit
fi
cat $1 |
grep -v ' KEY "' |
grep -v ' UNIQUE KEY "' |
grep -v ' PRIMARY KEY ' |
sed '/^SET/d' |
sed 's/ unsigned / /g' |
sed 's/ auto_increment/ primary key autoincrement/g' |
sed 's/ smallint([0-9]*) / integer /g' |
sed 's/ tinyint([0-9]*) / integer /g' |
sed 's/ int([0-9]*) / integer /g' |
sed 's/ character set [^ ]* / /g' |
sed 's/ enum([^)]*) / varchar(255) /g' |
sed 's/ on update [^,]*//g' |
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;
  }
  ' > $1.sql
cat $1.sql | sqlite3 $1.db > $1.err
ERRORS=`cat $1.err | wc -l`
if [ $ERRORS == 0 ]; then
  echo "Conversion completed without error. Output file: $1.db"
  rm $1.sql
  rm $1.err
    rm tmp
else
   echo "There were errors during conversion.  Please review $1.err and $1.sql for details."
fi

#!/bin/sh # 用法:$0 如果[“x$1”==“x”];然後 echo "用法: $0 " 出口 菲 貓 $1 | grep -v ' KEY "' | | grep -v ' KEY "' | grep -v ' 唯一鍵 "' | grep -v '主鍵' | sed '/^SET/d' | sed '/^SET/d' | sed 's/ 無符號 / /g' | sed 's/ auto_increment/ 主鍵自動增量/g' | sed 's/smallint([0-9]*) / 整數 /g' | sed 's/tinyint([0-9]*) / 整數 /g' | sed 's/ int([0-9]*) / 整數 /g' | sed 's/ 字元集 [^ ]* / /g' | sed 's/ enum([^)]*) / varchar(255) /g' | sed 's/ enum([^)]*) / varchar(255) /g' | sed 's/ 更新 [^,]*//g' | perl -e 'local $/;$_=;s/,\n\)/\n\)/gs;印出「開始;\n」;印;印出「提交;\n」' | Perl-pe' 如果 (/^(插入。?)\(/) { $a=$1; s/\\'\''/'\'\''/g; s/\\n/\n/g; s/\),\(/\);\n$a\(/g; } ' > $1.sql 貓 $1.sql | sqlite3 $1.db > > $1.錯誤 錯誤=`cat $1.err |廁所-l` 如果 [ $ERRORS == 0 ];然後 echo“轉換完成,沒有錯誤。輸出檔:$1.db” rm $1.sql rm $1. 錯誤 rmtmp 別的 echo "轉換過程中發生錯誤。請查看 $1.err 和 $1.sql 以了解詳細資訊。" fi

    腳本執行以下轉換:
  • 刪除冗餘鍵定義。
  • 將欄位設為無符號(如果適用)。
  • 設定 auto_increment 欄位為主鍵自動增量。
  • 將整數型別轉換為其在 SQLite 中的等效型別(smallint、tinyint 和 int 變成整數)。
  • 刪除字元集。
  • 將枚舉型別轉換為varchar(255).
  • 刪除更新觸發器的集合參考。
  • 將多行插入轉換為單一插入以實現 SQLite 相容性。
為了安全起見,將轉換後的 SQL 包裝在事務中.

How to Convert a MySQL Dump SQL File to a SQLite3 Database?

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3