it-swarm-tr.com

Birçok SQLite veritabanını nasıl birleştirebilirim?

Çok sayıda SQLite veritabanına sahipsem, hepsi aynı şemaya sahipse, tüm veritabanlarında sorgu yapmak için bunları birleştirmenin en iyi yolu nedir? 

Bunu yapmak için ATTACH kullanmanın mümkün olduğunu biliyorum ama makinedeki bellek sistemine bağlı olarak 32 ve 64 veritabanında limit var.

56
DavidM

Bu talep üzerine, günde birkaç kez mümkün olacaktı. Çalışırken görebileceğim yol http://sqlite.1065341.n5.nabble.com/Attempting-to-merge-large-databases-td39548.html veritabanlarının büyük bir DB içine birleştirildiği yer. , sorgu yapıldı ve sonra büyük veritabanı silindi.

16
DavidM

DavidM'in cevabındaki Nabble yayınından özetlemek için:

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

Gerektiği kadar tekrarlayın.

Not: mike'nin yorumuna göre detach toMerge; eklendi.

59
dfrankow

Bu birleştirme işlemini yalnızca bir kez yapmanız gerekiyorsa (yeni ve daha büyük bir veritabanı oluşturmak için), tüm sqlite veritabanlarınızı döngü içine alacak bir komut dosyası/program oluşturabilir ve ardından verileri ana (büyük) veritabanınıza ekleyebilirsiniz.

1
Espo

Çok eski bir konu olmasına rağmen, bugünün programlama ihtiyaçlarında bu hala önemli bir sorudur. Bunu buraya gönderiyorum çünkü verilen cevapların hiçbiri kısa, özlü ve kolay değil. Bu, bu sayfada sona eren Google çalışanları için. GUI gidelim:

  1. İndir Sqlitestudio
  2. Tüm veritabanı dosyalarınızı Ctrl + O klavye kısayolunu kullanarak ekleyin
  3. Hepsini açıp etkinleştirmek/genişletmek için şimdi yüklenen her db dosyasına çift tıklayın
  4. Eğlenceli kısım: tabloların her birine sağ tıklayın ve Copy üzerine tıklayın ve ardından yüklenen veritabanı dosyaları listesinde hedef veritabanına gidin (veya gerekirse yeni bir tane oluşturun) ve hedef db'ye sağ tıklayın ve tıklayın. Paste tarihinde

Kopyala ve yapıştır :) adlı eski programlama becerisini kullanarak böyle göz korkutucu bir işin çözülebileceğini fark ettim.

0