「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > MySQL ダンプ SQL ファイルを SQLite3 データベースに変換するにはどうすればよいですか?

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

2024 年 11 月 8 日に公開
ブラウズ:803

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

MySQL ダンプ SQL を Sqlite3 DB に変換

MySQL ダンプ 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
;それから echo "使用法: $0 " 出口 フィ 猫 $1 | grep -v ' キー "' | grep -v '一意のキー "' | grep -v '主キー' | sed '/^SET/d' | sed 's/ unsigned / /g' | sed 's/auto_increment/主キー autoincrement/g' | sed 's/ smallint([0-9]*) / 整数 /g' | sed 's/ tinyint([0-9]*) / 整数 /g' | sed 's/ int([0-9]*) / 整数 /g' | sed の/ 文字セット [^ ]* / /g' | sed 's/ enum([^)]*) / varchar(255) /g' | 更新時の sed 's/ [^,]*//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 猫 $1.sql | sqlite3 $1.db > $1.err エラー=`猫 $1.err |トイレ -l` if [ $ERRORS == 0 ];それから echo "変換はエラーなく完了しました。出力ファイル: $1.db" rm $1.sql rm $1.err rmtmp それ以外 echo "変換中にエラーが発生しました。詳細については、$1.err と $1.sql を確認してください。" fi

スクリプトは次の変換を実行します:
  • 冗長なキー定義を削除します。
  • 該当する場合、フィールドを署名なしに設定します。
  • auto_increment フィールドを設定します。主キーの自動インクリメントに変換します。
  • 整数型を SQLite の同等の型に変換します (smallint、tinyint、および int は整数になります)。
  • 文字セットを削除します。
  • 列挙型を次のように変換します。 varchar(255).
  • 更新トリガーへのセット参照を削除します。
  • SQLite との互換性のために、複数行の挿入を個別の挿入に変換します。
  • 安全のために、変換された SQL をトランザクションにラップします。 .

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3