2008-09-17 31 views
53

Nếu tôi có một số lượng lớn cơ sở dữ liệu SQLite, tất cả đều có cùng một lược đồ, cách tốt nhất để kết hợp chúng lại với nhau để thực hiện truy vấn trên tất cả các cơ sở dữ liệu là gì?Làm cách nào tôi có thể hợp nhất nhiều cơ sở dữ liệu SQLite?

Tôi biết có thể sử dụng ATTACH để thực hiện việc này nhưng có a limit trong số 32 và 64 cơ sở dữ liệu tùy thuộc vào hệ thống bộ nhớ trên máy.

Trả lời

2

Nếu bạn chỉ cần thực hiện thao tác hợp nhất này một lần (để tạo cơ sở dữ liệu lớn hơn), bạn có thể tạo tập lệnh/chương trình sẽ lặp tất cả cơ sở dữ liệu sqlite của bạn và sau đó chèn dữ liệu vào cơ sở dữ liệu chính (lớn) của bạn.

0

Không có hành vi phạm tội, cũng giống như một nhà phát triển khác, tôi e rằng ý tưởng của bạn có vẻ cực kỳ kém hiệu quả. Dường như với tôi rằng thay vì hợp nhất các cơ sở dữ liệu SQLite, bạn nên lưu trữ một số bảng trong cùng một tệp Cơ sở dữ liệu.

Tuy nhiên nếu tôi nhầm lẫn, tôi đoán bạn có thể XỬ LÝ cơ sở dữ liệu và sau đó sử dụng VIEW để đơn giản hóa truy vấn của bạn. Hoặc tạo một bảng trong bộ nhớ và sao chép tất cả dữ liệu (nhưng hiệu suất thậm chí còn tồi tệ hơn, đặc biệt nếu bạn có cơ sở dữ liệu lớn)

+0

Việc hợp nhất hai cơ sở dữ liệu rất hữu ích khi một kỹ sư cơ sở dữ liệu đang làm việc với một bản sao khác, để sửa đổi cấu trúc hoặc nội dung theo những cách nhất định và trong khi đó phiên bản trực tiếp cũ đang được người dùng sửa đổi. – Beejor

4

Bạn cũng có thể sử dụng phần mềm khác/hợp nhất để thực hiện công việc. Bạn có thể thử SQLite Compare, nó hỗ trợ so sánh và hợp nhất các bảng SQLite lớn trong số những thứ khác.

Good Luck

Liron

+0

http://download.cnet.com/3001-10254_4-10964767.html?spi=5484e22b6319e24014aac6ce19f95e93 – JustCurious

50

Để tóm tắt từ Nabble post trong câu trả lời của DavidM:

attach 'c:\test\b.db3' as toMerge;   
BEGIN; 
insert into AuditRecords select * from toMerge.AuditRecords; 
COMMIT; 
detach toMerge; 

Lặp lại khi cần thiết.

Lưu ý: thêm detach toMerge; theo nhận xét của mike.

+5

và cũng 'tách thànhMerge;' * sau * cam kết. – mike

+2

Điều này sẽ chỉ hợp nhất một bảng tôi giả sử. Làm thế nào bạn sẽ nhập nhiều bảng cùng một lúc, bảo quản ngoại ngữ của họ? – ILoveCoding

+0

Tôi đã thử điều này, nhưng các cột từ db đính kèm nơi không đúng với một số lý do và kết quả là sai. Do đó, tôi đã phải khai báo một cách rõ ràng các tên cột theo cùng thứ tự trong các câu lệnh INSERT và SELECT. –

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