it-swarm.it

Come posso unire molti database SQLite?

Se ho un gran numero di database SQLite, tutti con lo stesso schema, qual è il modo migliore per unirli insieme per eseguire una query su tutti i database? 

So che è possibile usare _ ATTACH per farlo, ma ha un limite di 32 e 64 database a seconda del sistema di memoria sulla macchina.

56
DavidM

Questo sarebbe fatto su richiesta, possibile più volte al giorno. Il modo in cui lo vedrei funzionare è come in http://sqlite.1065341.n5.nabble.com/Attempting-to-merge-large-databases-td39548.html dove i database sono uniti in un grande DB , la query eseguita e quindi il grande database cancellato.

16
DavidM

Per riassumere dal Nabble post nella risposta di DavidM:

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

Ripeti se necessario.

Nota: aggiunto detach toMerge; come per il commento di mike.

59
dfrankow

Se è necessario eseguire questa operazione di unione una sola volta (per creare un nuovo database più grande), è possibile creare uno script/programma che eseguirà il loop di tutti i database sqlite e quindi inserirà i dati nel database principale (grande).

1
Espo

Sebbene sia un thread molto vecchio, questa è ancora una questione rilevante nelle attuali esigenze di programmazione. Sto postando questo qui perché nessuna delle risposte fornite è concisa, facile e diretta. Questo è nell'interesse dei googler che finiscono in questa pagina. GUI andiamo:

  1. Scarica Sqlitestudio
  2. Aggiungi tutti i tuoi file di database usando la scorciatoia da tastiera Ctrl + O
  3. Fai doppio clic su ciascun file db ora caricato per aprirlo/attivarlo/espanderlo tutti
  4. Parte divertente: è sufficiente fare clic con il pulsante destro del mouse su ciascuna delle tabelle e fare clic su Copy, quindi accedere al database di destinazione nell'elenco dei file di database caricati (o crearne uno nuovo se necessario) e fare clic con il pulsante destro del mouse sul db di destinazione e fare clic su Paste

Mi ha entusiasmato rendermi conto che un compito così arduo può essere risolto usando l'antica abilità di programmazione chiamata: copia e incolla :)

0