Domanda

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 usarlo ALLEGARE per farlo, ma è così un limite da 32 e 64 database a seconda del sistema di memoria della macchina.

È stato utile?

Soluzione 2

Ciò verrebbe fatto su richiesta, possibilmente 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 vengono uniti in un DB di grandi dimensioni, la query viene eseguita e quindi il database di grandi dimensioni viene eliminato.

Altri suggerimenti

Per riassumere dal Posta di Nabble nella risposta di DavidM:

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

Ripetere secondo necessità.

Nota:aggiunto detach toMerge; come da commento di Mike.

Se hai bisogno di eseguire questa operazione di unione solo una volta (per creare un nuovo database più grande), potresti creare uno script/programma che eseguirà il loop di tutti i tuoi database SQLite e quindi inserirà i dati nel tuo database principale (grande).

Sebbene sia un thread molto vecchio, questa è ancora una questione rilevante nelle esigenze di programmazione di oggi.Lo pubblico qui perché nessuna delle risposte fornite è ancora concisa, facile e diretta al punto.Questo è per il bene dei Googler che finiscono su questa pagina.GUI andiamo:

  1. Scaricamento Sqlitestudio
  2. Aggiungi tutti i file del database utilizzando il file Ctrl + O scorciatoia da tastiera
  3. Fare doppio clic su ciascun file db ora caricato per aprirli/attivarli/espanderli tutti
  4. Parte divertente:è sufficiente fare clic con il pulsante destro del mouse su ciascuna tabella e fare clic su Copy, quindi andare al database di destinazione nell'elenco dei file di database caricati (o crearne uno nuovo se necessario) e fare clic con il tasto destro del mouse sul db di destinazione e fare clic su Paste

Sono rimasto stupito nel realizzare che un compito così arduo può essere risolto utilizzando l'antica abilità di programmazione chiamata:copia e incolla :)

Senza offesa, da sviluppatore a sviluppatore, temo che la tua idea sembri terribilmente inefficiente.Mi sembra che invece di unire i database SQLite dovresti probabilmente memorizzare più tabelle all'interno dello stesso file di database.

Tuttavia, se sbaglio, immagino che potresti ALLEGARE i database e quindi utilizzare una VISUALIZZAZIONE per semplificare le tue query.Oppure crea una tabella in memoria e copia tutti i dati (ma è ancora peggio in termini di prestazioni, soprattutto se disponi di database di grandi dimensioni)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top