2011-01-02 12 views

Respuesta

29

creo que se podría utilizar el siguiente, en combinación:

$ diff sqlite-file-1.sql sqlite-file-2.sql > sqlite-patch.diff 
$ patch -p0 sqlite-file-1.sql sqlite-patch.diff 

espero que funcione para usted. De lo contrario, le recomiendo consultar las páginas de manual:

$ man diff 
$ man patch 

EDIT: Muy bien, aquí está el conjunto de recorrido.

En primer lugar, volcar las bases de datos:

$ sqlite test1.sql .dump > test1.sql.txt 
$ sqlite test2.sql .dump > test2.sql.txt 

A continuación, generar un archivo diff:

$ diff -u test1.sql.txt test2.sql.txt > patch-0.1.diff 

Y, por último, aplicar el parche:

$ patch -p0 test1.sql.txt patch-0.1.diff 
+0

No funciona, como SQLite es un archivo binario, el único resultado que obtiene es "los archivos binarios son diferentes" –

+2

¿No se romperá esto si modifica el esquema que ya tiene datos? Por ejemplo, si agrega un campo y desea aplicar un parche al campo adicional a una base de datos existente. –

+0

+1 @indienick ¡Consejo útil! – Medorator

1

Tal vez el uso de este herramienta: http://download.cnet.com/SQLite-Diff/3000-10254_4-10894771.html? Pero se puede utilizar la solución aportada por @indienick siempre y cuando primero volcar la base de datos SQLite binario con algo como: sqlite x.db .dump> output.sql

Espero que esto ayude, Moszi

+0

¿Cómo exactamente descargo mi SQLite? No tengo una línea de comando sqlite instalada. –

+0

Si usa una caja Mac estándar, entonces debe tener sqlite en/usr/bin/sqlite3;) – Moszi

+0

La última vez que revisé, no tuvo que preocuparse por tirar archivos SQLite, ya que SQLite trabaja directamente con un archivo .sql - No está todo escondido en archivos planos binarios, como PostgreSQL o MySQL. – nesv

9

Podemos utilizar sqldiff el Programa de Utilidad:

https://www.sqlite.org/sqldiff.html

se comparará la fuente a las bases de datos de destino y generar comandos SQL para hacer fuente equivalente a destino.

  • Cualquier diferencia en el contenido de filas emparejadas se emiten como actualizaciones.
  • Filas en origen la base de datos que no se pudo emparejar se genera como DELETE.
  • Filas en el destino base de datos que no se pudieron emparejar son salida como INSERTOS.

tenemos que descargar el código fuente y compilarlo, desde la carpeta de herramientas.

+1

No es necesario compilar, está disponible como un binario precompilado en la [página de descarga] (https://www.sqlite.org/download.html) – user

+0

No tiene que perder el tiempo con la carpeta 'herramienta'. Simplemente './configure && make sqldiff'. –

Cuestiones relacionadas