Как я могу разбить 2 файла SQLite?
Использование SQLite-manager (в форме XUL) на Mac.
Как я могу отличить файл SQLite от одного, представленного кем-то еще в команде, и включить его изменения?
Спасибо.
Ответы
Ответ 1
Я думаю, вы могли бы использовать следующее, в сочетании:
$ diff sqlite-file-1.sql sqlite-file-2.sql > sqlite-patch.diff
$ patch -p0 sqlite-file-1.sql sqlite-patch.diff
Я надеюсь, что это сработает для вас. В противном случае я настоятельно рекомендую обратиться к man-страницам:
$ man diff
$ man patch
РЕДАКТИРОВАТЬ: Хорошо, здесь вся прогулка.
Сначала удалите базы данных:
$ sqlite test1.sql .dump > test1.sql.txt
$ sqlite test2.sql .dump > test2.sql.txt
Затем создайте файл diff:
$ diff -u test1.sql.txt test2.sql.txt > patch-0.1.diff
И, наконец, применить патч:
$ patch -p0 test1.sql.txt patch-0.1.diff
Ответ 2
Мы можем использовать служебную программу sqldiff:
https://www.sqlite.org/sqldiff.html
Он будет сравнивать источник с базами данных назначения и генерировать SQL-команды, чтобы сделать исходный эквивалент получателю.
- Любые различия в содержимом парных строк выводятся как UPDATE.
- Строки в базе данных источника, которые не могут быть спарены, выводятся как Удаления.
- Строки в базе данных назначения, которые не могут быть спарены, как INSERT.
Мы должны загрузить источники и скомпилировать их из папки инструментов.
Ответ 3
Возможно, используя этот инструмент: http://download.cnet.com/SQLite-Diff/3000-10254_4-10894771.html?
Но вы можете использовать решение, предоставленное @indienick, при условии, что вы сначала выгрузите двоичную базу данных sqlite с чем-то вроде: sqlite x.db.dump > output.sql
Надеюсь, это поможет,
Moszi