Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Menukar Fail Dump MySQL ke dalam Format SQLite-Importable?

Bagaimana untuk Menukar Fail Dump MySQL ke dalam Format SQLite-Importable?

DDD
DDDasal
2024-10-28 18:16:30465semak imbas

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

Menukar Fail Dump MySQL ke dalam Format Penting SQLite

Masalah:

Mengimport fail SQL buang MySQL yang dieksport ke dalam SQLite3 pangkalan data secara langsung menggunakan alat sqlite3 tidak berjaya. Bagaimanakah perkara ini boleh diselesaikan?

Penyelesaian:

Skrip shell berikut boleh menukar fail dump MySQL kepada format yang boleh diimport ke dalam 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

Penjelasan:

  • Skrip terlebih dahulu menapis baris tertentu daripada fail dump MySQL yang boleh menyebabkan isu semasa mengimport ke SQLite3, seperti kekangan utama dan set aksara takrifan.
  • Ia kemudian menukar jenis data tertentu, seperti smallint dan int, kepada integer dan mengalih keluar sebarang pengubah yang tidak ditandatangani.
  • Skrip menukar jenis data enum kepada varchar(255) dan mengalih keluar sebarang pada fasal kemas kini.
  • Ia membungkus penyata SQL dalam blok transaksi mula dan komit.
  • Skrip membetulkan mana-mana aksara baris baharu yang terlepas dan membahagikan penyataan INSERT dengan berbilang baris ke dalam penyata individu.
  • Akhir sekali, ia mengimport fail SQL yang diubah suai ke dalam pangkalan data SQLite3.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Fail Dump MySQL ke dalam Format SQLite-Importable?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn