2011-01-02 18 views

Trả lời

29

Tôi tin rằng bạn có thể sử dụng sau đây, kết hợp:

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

Tôi hy vọng rằng tác phẩm cho bạn. Nếu không, tôi đặc biệt khuyên bạn nên tham khảo ý kiến ​​của các trang hướng dẫn:

$ man diff 
$ man patch 

EDIT: Được rồi, đây là toàn bộ bước đi.

Đầu tiên, đổ cơ sở dữ liệu:

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

Tiếp theo, tạo ra một file diff:

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

Và, cuối cùng, để áp dụng các bản vá:

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

Không hoạt động, vì SQLite là tệp nhị phân, kết quả duy nhất bạn nhận được là "tệp nhị phân khác" –

+2

Sẽ không ngắt nếu bạn sửa đổi lược đồ đã có dữ liệu trong đó? Ví dụ: nếu bạn thêm một trường và muốn vá trường bổ sung vào cơ sở dữ liệu hiện có. –

+0

+1 @indienick Mẹo hữu ích! – Medorator

1

Có thể sử dụng này công cụ: http://download.cnet.com/SQLite-Diff/3000-10254_4-10894771.html? Nhưng bạn có thể sử dụng giải pháp được cung cấp bởi @indienick cung cấp đầu tiên bạn đổ cơ sở dữ liệu SQLite nhị phân với một cái gì đó như: sqlite x.db .dump> output.sql

Hope this helps, Moszi

+0

Làm cách nào để kết xuất SQLite của tôi? Tôi chưa cài đặt dòng lệnh sqlite. –

+0

Nếu bạn sử dụng hộp Mac chuẩn, thì bạn nên có sqlite trong/usr/bin/sqlite3;) – Moszi

+0

Lần cuối cùng tôi kiểm tra, bạn không cần phải lo lắng về việc bán các tệp SQLite, vì SQLite hoạt động trực tiếp với tệp .sql - nó không phải là tất cả ẩn đi trong tập tin nhị phân phẳng, như PostgreSQL hoặc MySQL. – nesv

9

Chúng ta có thể sử dụng các sqldiff Chương trình Utility:

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

Nó sẽ so sánh các nguồn cơ sở dữ liệu đích và tạo ra các lệnh SQL để làm nguồn tương đương đích.

  • Mọi khác biệt về nội dung của hàng được ghép nối được xuất dưới dạng UPDATE.
  • Hàng trong nguồn nguồn cơ sở dữ liệu không thể ghép nối được xuất dưới dạng DELETE.
  • Hàng trong địa chỉ đích cơ sở dữ liệu không thể ghép nối được là đầu ra dưới dạng INSERT.

Chúng tôi phải tải xuống các nguồn và biên dịch từ thư mục công cụ.

+1

Không cần biên dịch, nó có sẵn dưới dạng nhị phân biên dịch sẵn trên [trang tải xuống] (https://www.sqlite.org/download.html) – user

+0

Bạn không cần phải bận tâm với thư mục 'công cụ'. Chỉ cần './configure && make sqldiff'. –

Các vấn đề liên quan