首頁  >  文章  >  資料庫  >  如何將 MySQL 轉儲 SQL 檔案轉換為 SQLite3 資料庫?

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

DDD
DDD原創
2024-11-03 01:27:29642瀏覽

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

將 MySQL Dump SQL 轉換為 Sqlite3 DB

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

提供的shell 腳本提供了一個自動轉換轉儲檔案的方法:

<code class="shell">#!/bin/sh
# Usage:  <dumpname>

if [ "x" == "x" ]; then
   echo "Usage:  <dumpname>"
   exit
fi
cat  |
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=;
     s/\'\''/'\'\''/g;
     s/\n/\n/g;
     s/\),\(/\);\n$a\(/g;
  }
  ' > .sql
cat .sql | sqlite3 .db > .err
ERRORS=`cat .err | wc -l`
if [ $ERRORS == 0 ]; then
  echo "Conversion completed without error. Output file: .db"
  rm .sql
  rm .err
    rm tmp
else
   echo "There were errors during conversion.  Please review .err and .sql for details."
fi</code>

腳本執行以下轉換:

  • 刪除冗餘的鍵定義。
  • 將欄位設為無符號(如果適用)。
  • 將 auto_increment 欄位設定為主鍵自動增量。
  • 將整數型別轉換為其在 SQLite 中的等效型別(smallint、tinyint 和 int 變成整數)。
  • 刪除字元集。
  • 將枚舉型別轉換為 varchar(255)。
  • 刪除更新觸發器的集引用。
  • 將多行插入轉換為單一插入以實現 SQLite 相容性。
  • 將轉換後的 SQL 包裝在交易中以確保安全。

以上是如何將 MySQL 轉儲 SQL 檔案轉換為 SQLite3 資料庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn