"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo convertir un archivo SQL de volcado de MySQL en una base de datos SQLite3?

¿Cómo convertir un archivo SQL de volcado de MySQL en una base de datos SQLite3?

Publicado el 2024-11-08
Navegar:192

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

Conversión de SQL de volcado de MySQL a base de datos Sqlite3

La importación de un archivo SQL de volcado de MySQL a una base de datos SQLite3 requiere conversión para garantizar la compatibilidad.

El script de shell proporcionado ofrece una forma automatizada de convertir el archivo de volcado:

#!/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
; entonces echo "Uso: $0 " salida fi gato $1 | grep -v ' CLAVE "' | grep -v ' CLAVE ÚNICA "' | grep -v ' CLAVE PRIMARIA ' | sed'/^SET/d' | sed 's/ sin firmar / /g' | sed 's/ auto_increment/ clave primaria autoincrement/g' | sed 's/ smallint([0-9]*) / entero /g' | sed 's/ tinyint([0-9]*) / entero /g' | sed 's/ int([0-9]*) / entero /g' | sed 's/ conjunto de caracteres [^ ]* / /g' | sed 's/ enum([^)]*) / varchar(255) /g' | sed 's/ en la actualización [^,]*//g' | perl -e 'local $/;$_=;s/,\n\)/\n\)/gs;print "begin;\n";print;print "commit;\n"' | perl-pe ' si (/^(INSERTAR. ?)\(/) { $a=$1; s/\\'\''/'\'\''/g; s/\\n/\n/g; s/\),\(/\);\n$a\(/g; } ' > $1.sql gato $1.sql | sqlite3 $1.db > $1.err ERRORES=`gato $1.err | baño -l` si [ $ERRORES == 0 ]; entonces echo "Conversión completada sin errores. Archivo de salida: $1.db" habitación $1.sql habitación $1.err rm tmp demás echo "Hubo errores durante la conversión. Revise $1.err y $1.sql para obtener más detalles". fi

El script realiza las siguientes transformaciones:
  • Elimina definiciones de claves redundantes.
  • Establece campos sin firmar si corresponde.
  • Establece campos de incremento automático a incremento automático de clave principal.
  • Convierte tipos de enteros a sus equivalentes en SQLite (smallint, tinyint e int se convierten en enteros).
  • Elimina juegos de caracteres.
  • Convierte tipos de enumeración a varchar(255).
  • Elimina referencias establecidas para activadores de actualización.
  • Convierte múltiples inserciones de filas en inserciones individuales para compatibilidad con SQLite.
  • Envuelve el SQL convertido en una transacción por seguridad .

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3