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.
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.
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.
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).
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:
Ctrl + O
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 :)