MySQL ダンプ ファイルを SQLite がインポート可能な形式に変換するにはどうすればよいですか?

DDD
リリース: 2024-10-28 18:16:30
オリジナル
519 人が閲覧しました

 How to Convert MySQL Dump Files into SQLite-Importable Format?

MySQL ダンプ ファイルを SQLite インポート可能な形式に変換する

問題:

エクスポートされた MySQL ダンプ SQL ファイルを SQLite3 にインポートするsqlite3 ツールを直接使用してデータベースを作成することは成功しません。これはどのように解決できますか?

解決策:

次のシェル スクリプトは、MySQL ダンプ ファイルを SQLite3 にインポートできる形式に変換できます:

#!/bin/sh
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
ログイン後にコピー

説明:

  • スクリプトはまず、キー制約や文字セットなど、SQLite3 にインポートするときに問題を引き起こす可能性のある特定の行を MySQL ダンプ ファイルから除外します。
  • 次に、smallint や int などの特定のデータ型を整数に変換し、符号なし修飾子を削除します。
  • スクリプトは enum データ型を varchar(255) に変換し、上のデータ型をすべて削除します。
  • SQL ステートメントを begin および commit トランザクション ブロックでラップします。
  • スクリプトはエスケープされた改行文字を修正し、複数の行を含む INSERT ステートメントを個々のステートメントに分割します。
  • 最後に、変更された SQL ファイルを SQLite3 データベースにインポートします。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート