"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como converter um arquivo SQL de despejo MySQL em um banco de dados SQLite3?

Como converter um arquivo SQL de despejo MySQL em um banco de dados SQLite3?

Publicado em 2024-11-08
Navegar:749

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

Convertendo MySQL Dump SQL em Sqlite3 DB

Importar um arquivo SQL dump MySQL para um banco de dados SQLite3 requer conversão para garantir a compatibilidade.

O script de shell fornecido oferece uma maneira automatizada de converter o arquivo de despejo:

#!/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

O script executa as seguintes transformações:

  • Remove definições de chave redundantes.
  • Define os campos como não assinados, se aplicável.
  • Define campos de incremento automático para incremento automático de chave primária.
  • Converte tipos inteiros em seus equivalentes em SQLite (smallint, tinyint e int tornam-se inteiros).
  • Remove conjuntos de caracteres.
  • Converte tipos de enum em varchar(255).
  • Remove referências definidas para gatilhos de atualização.
  • Converte múltiplas inserções de linha em inserções individuais para compatibilidade com SQLite.
  • Envolve o SQL convertido em uma transação por segurança .
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3