Si j'ai un grand nombre de bases de données SQLite, toutes avec le même schéma, quel est le meilleur moyen de les fusionner afin d'effectuer une requête sur toutes les bases de données?
Je sais qu'il est possible d'utiliser ATTACH pour le faire, mais il a une limite de 32 et 64 bases de données en fonction du système de mémoire de la machine.
Cela se ferait à la demande, plusieurs fois par jour. Je verrais bien que cela fonctionne comme dans http://sqlite.1065341.n5.nabble.com/Attempting-to-merge-large-databases-td39548.html où les bases de données sont fusionnées dans un grand DB , la requête effectuée puis la grande base de données supprimée.
Pour résumer le post Nabble dans la réponse de DavidM:
attach 'c:\test\b.db3' as toMerge;
BEGIN;
insert into AuditRecords select * from toMerge.AuditRecords;
COMMIT;
detach toMerge;
Répétez au besoin.
Note: ajout de detach toMerge;
selon le commentaire de Mike.
Si vous ne devez effectuer cette opération de fusion qu’une seule fois (pour créer une nouvelle base de données plus grande), vous pouvez créer un script/programme qui bouclera toutes vos bases de données sqlite, puis insérera les données dans votre (grande) base de données.
Bien qu’il s’agisse d’un très vieux fil conducteur, c’est toujours une question pertinente pour les besoins actuels en matière de programmation. Je poste ceci ici parce qu'aucune des réponses fournies à ce jour n'est concise, facile et directe. C'est pour l'amour des googleurs qui se retrouvent sur cette page. GUI nous allons:
Ctrl + O
Copy
, puis d'aller à la base de données cible dans la liste des fichiers de base de données chargés (ou en créer un nouveau si nécessaire) et de cliquer avec le bouton droit de la souris sur la base de données cible. sur Paste
J'étais persuadé de réaliser qu'une tâche aussi ardue pouvait être résolue à l'aide de la compétence de programmation ancienne appelée: copier-coller :)