2011-01-02 2 views

ответ

29

Я считаю, что вы могли бы использовать следующее, в комбинации:

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

Я надеюсь, что работает для вас. В противном случае, я настоятельно рекомендую консультации с человеко-страниц:

$ man diff 
$ man patch 

EDIT: Хорошо, вот вся проходная.

Во-первых, дамп базы данных:

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

Далее генерируют дифф файл:

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

И, наконец, применить патч:

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

Не работает, поскольку SQLite является двоичным файлом, единственный результат, который вы получаете, это «бинарные файлы отличаются» –

+2

Не изменится ли эта схема, если вы измените схему, в которой уже есть данные? Например, если вы добавите поле и хотите исправить дополнительное поле в существующую базу данных. –

+0

+1 @indienick Полезный совет! – Medorator

1

Может быть с помощью этого tool: http://download.cnet.com/SQLite-Diff/3000-10254_4-10894771.html? Но вы можете использовать решение, предоставленное @indienick условия, что вы первый дамп бинарных базы данных SQLite с чем-то вроде: SQLite x.db .dump> output.sql

Надеется, что это помогает, Moszi

+0

Как именно я сбрасываю свой SQLite? У меня нет установленной командной строки sqlite. –

+0

Если вы используете стандартное поле Mac, тогда у вас должен быть sqlite в/usr/bin/sqlite3;) – Moszi

+0

В прошлый раз, когда я проверял, вам не нужно было беспокоиться о сбросе SQLite-файлов, поскольку SQLite работает напрямую с файлом .sql - он не все скрывается в двоичных плоских файлах, таких как PostgreSQL или MySQL. – nesv

9

Мы можем использовать sqldiff Utility Программа:

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

Он сравнивает источник базы данных назначения и генерировать SQL команды, чтобы сделать исходный эквивалент к месту назначения.

  • Любые различия в содержании парных строк выводятся как Updates.
  • Строки в базе данных база данных, которая не может быть сопряжена, выводится как УДАЛИТЬ.
  • Строки в базе данных , которые не могут быть сопряжены, являются вывод как INSERT.

Мы должны загрузить исходники и скомпилировать его, из папки инструмента.

+1

Не нужно компилировать, он доступен как предварительно скомпилированный двоичный файл на странице [страница загрузки] (https://www.sqlite.org/download.html) – user

+0

Вам не нужно возиться с папкой 'tool'. Просто './configure && make sqldiff'. –

Смежные вопросы