Question

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 pour effectuer une requête sur toutes les bases de données?

Je sais qu’il est possible d’utiliser ATTACH pour le faire, mais limite de 32 et 64 bases de données en fonction du système de mémoire de la machine.

Était-ce utile?

La solution 2

Cela se ferait à la demande, plusieurs fois par jour. Je verrais cela fonctionner 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 une base de données volumineuse, la requête effectuée, puis la base de données volumineuse supprimée.

Autres conseils

En résumé, tiré de la Message captivant 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 si nécessaire.

Remarque: ajout de détacher toMerge; conformément au 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. / p>

Bien qu’il s’agisse d’un très vieux sujet, c’est toujours une question pertinente pour les besoins de programmation actuels. Je poste ceci ici parce qu'aucune des réponses fournies n'est encore concise, facile et directe. C'est pour l'amour des googleurs qui se retrouvent sur cette page. GUI nous allons:

  1. Téléchargez Sqlitestudio
  2. Ajoutez tous vos fichiers de base de données à l'aide du raccourci clavier Ctrl + O
  3. Double-cliquez sur chaque fichier de base de données maintenant chargé pour les ouvrir / les activer / les développer tous
  4. Partie amusante: il suffit de cliquer avec le bouton droit de la souris sur chacune des tables et de cliquer sur Copier , puis d'aller à la base de données cible dans la liste des fichiers chargés (ou en créer un si nécessaire) et cliquez avec le bouton droit sur la base de données cible, puis cliquez sur coller

Je devais réaliser que cette tâche aussi ardue pouvait être résolue à l'aide de l'ancienne compétence de programmation appelée: copier-coller:)

Sans vouloir vous offenser, de développeur en développeur, je crains que votre idée ne semble terriblement inefficace. Il me semble qu'au lieu de réunir des bases de données SQLite, vous devriez probablement stocker plusieurs tables dans le même fichier de base de données.

Cependant, si je me trompe, je suppose que vous pouvez ATTACHER les bases de données, puis utiliser VIEW pour simplifier vos requêtes. Ou créez une table en mémoire et copiez toutes les données (mais c'est encore pire en termes de performances, surtout si vous avez de grandes bases de données)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top