ホームページ  >  記事  >  データベース  >  MySQL ダンプ SQL ファイルを SQLite3 データベースに変換するにはどうすればよいですか?

MySQL ダンプ SQL ファイルを SQLite3 データベースに変換するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-03 01:27:29655ブラウズ

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

MySQL ダンプ SQL を Sqlite3 DB に変換する

MySQL ダンプ SQL ファイルを SQLite3 データベースにインポートするには、互換性を確保するために変換が必要です。

提供されたシェル スクリプトは、ダンプ ファイルを変換する自動化された方法を提供します。

<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 フィールドを主キーの autoincrement に設定します。
  • 整数型を SQLite の同等の型に変換します (smallint、tinyint、および int は整数になります)。
  • 文字セットを削除します。
  • 列挙型を varchar(255) に変換します。
  • トリガーを更新するためのセット参照を削除します。
  • 複数の行の挿入を個別の挿入に変換しますSQLite との互換性のために。
  • 安全のために、変換された SQL をトランザクションにラップします。

以上がMySQL ダンプ SQL ファイルを SQLite3 データベースに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。